She*_*hee 123 sql datetime sql-server-2008
我想datetime使用下面的SQL查询将值插入表(SQL Server)
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误信息. Incorrect syntax near '10'.
我用引号试了一下
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息 Cannot convert varchar to datetime
请帮忙!谢谢.
Ric*_*iwi 207
您将需要使用YYYYMMDD在SQL Server中进行明确的日期确定.
insert into table1(approvaldate)values('20120618 10:34:09 AM');
Run Code Online (Sandbox Code Playgroud)
如果您已与dd-mm-yy hh:mm:ss xm格式结合,则需要使用具有特定样式的CONVERT.
insert table1 (approvaldate)
values (convert(datetime,'18-06-12 10:34:09 PM',5));
Run Code Online (Sandbox Code Playgroud)
5这是意大利约会的风格.好吧,不仅仅是意大利人,而是图书在线的文化.
Pau*_*ams 26
字符串文字的更多与语言无关的选择是国际标准ISO 8601格式"YYYY-MM-DDThh:mm:ss".我使用下面的SQL查询来测试格式,它确实适用于sys.syslanguages中的所有SQL语言:
declare @sql nvarchar(4000)
declare @LangID smallint
declare @Alias sysname
declare @MaxLangID smallint
select @MaxLangID = max(langid) from sys.syslanguages
set @LangID = 0
while @LangID <= @MaxLangID
begin
select @Alias = alias
from sys.syslanguages
where langid = @LangID
if @Alias is not null
begin
begin try
set @sql = N'declare @TestLang table (langdate datetime)
set language ''' + @alias + N''';
insert into @TestLang (langdate)
values (''2012-06-18T10:34:09'')'
print 'Testing ' + @Alias
exec sp_executesql @sql
end try
begin catch
print 'Error in language ' + @Alias
print ERROR_MESSAGE()
end catch
end
select @LangID = min(langid)
from sys.syslanguages
where langid > @LangID
end
Run Code Online (Sandbox Code Playgroud)
根据Microsoft TechNet中的字符串文字日期和时间格式部分,标准ANSI标准SQL日期格式"YYYY-MM-DD hh:mm:ss"应该是"多语言".但是,使用相同的查询,ANSI格式不适用于所有SQL语言.
例如,在丹麦语中,您会遇到如下错误:
语言错误丹麦语将varchar数据类型转换为日期时间数据类型会导致超出范围的值.
如果要在C#中构建查询以在SQL Server上运行,并且需要传递ISO 8601格式的日期,请使用Sortable"s"格式说明符:
string.Format("select convert(datetime2, '{0:s}'", DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
小智 16
Management studio创建脚本,如:
insert table1 (foodate) values(CAST(N'2012-06-18 10:34:09.000' AS DateTime))
Run Code Online (Sandbox Code Playgroud)
小智 8
你需要添加它
insert into table1(date1) values('12-mar-2013');
Run Code Online (Sandbox Code Playgroud)
无需使用转换。只需将其列为 ISO 8601 格式的引用日期即可。
就像这样:
select * from table1 where somedate between '2000/01/01' and '2099/12/31'
Run Code Online (Sandbox Code Playgroud)
分隔符必须是 a/并且需要用单'引号引起来。
| 归档时间: |
|
| 查看次数: |
855070 次 |
| 最近记录: |