Sql 强制转换为日期时间不工作

Sql 强制转换为日期时间不工作,sql,sql-server,Sql,Sql Server,好了,伙计们,这简直让我疯了。我尝试了cast、convert、一个带有当前时间戳的子选择,但一直出现以下错误: 从字符串转换日期时间时转换失败 这有什么问题 insert into somethingtable values ('000000','value','$VAR1 = {};' ,'DummyValue', '$VAR1 = {};', Cast('2012-10-13 13:02:08.000' AS datetime), '0','1','

好了,伙计们,这简直让我疯了。我尝试了cast、convert、一个带有当前时间戳的子选择,但一直出现以下错误:

从字符串转换日期时间时转换失败

这有什么问题

insert into somethingtable 
 values ('000000','value','$VAR1 = {};' ,'DummyValue',
         '$VAR1 = {};', Cast('2012-10-13 13:02:08.000' AS datetime),
         '0','1','NULL','NULL') 

它似乎只关心或抱怨时间戳。

如果设置了日期格式DMY,则解析yyyy-mm-dd格式时会出现错误,因为SQL Server将尝试将其读取为yyyy-dd-mm!从SQL Server 2012开始,对于xxxx-xx-xx格式,dateformat将被忽略,但现在,您最好使用YYYYMMDD格式或datetime,您也可以使用YYYY-MM-DDTHH:MM:SS,例如“2012-10-13T13:02:08”

insert into somethingtable 
 values ('000000','value','$VAR1 = {};' ,'DummyValue',
         '$VAR1 = {};', Cast('20121013 13:02:08.000' AS datetime),
         '0','1','NULL','NULL') 

如果设置了日期格式DMY,则解析yyyy-mm-dd格式时将出现错误,因为SQL Server将尝试将其读取为yyyy-dd-mm!从SQL Server 2012开始,对于xxxx-xx-xx格式,dateformat将被忽略,但现在,您最好使用YYYYMMDD格式或datetime,您也可以使用YYYY-MM-DDTHH:MM:SS,例如“2012-10-13T13:02:08”

insert into somethingtable 
 values ('000000','value','$VAR1 = {};' ,'DummyValue',
         '$VAR1 = {};', Cast('20121013 13:02:08.000' AS datetime),
         '0','1','NULL','NULL') 
也许吧

转换(日期时间,'2012-10-13 13:02:08.000',121)

可能吗


convert(datetime,'2012-10-13 13:02:08.000',121)

证明了使用getdate()而不是强制转换当前日期时间是有效的。

证明了使用getdate()而不是强制转换当前日期时间是有效的。

我尝试了你的建议,但它说了同样的话:/我试过你的建议,但它说的完全一样/“选择Cast('2012-10-13 13:02:08.000'作为日期时间)”是否返回错误?insert语句所包含的信息比解决转换错误所需的信息多得多。尤其是在不知道表定义的情况下。在旁注中,insert语句应该始终定义列的列表。如果列的顺序位置发生更改,则插入操作将失败或以静默方式将值插入错误的列。是的,此select语句工作正常。时间戳和日期时间不可比较。如果您在问题中发布目标表定义,我想您会得到更好的帮助。有关时间戳和日期时间使用的更多信息,请参阅“SELECT Cast('2012-10-13 13 13:02:08.000'AS Datetime')是否返回错误?insert语句所包含的信息比解决转换错误所需的信息多得多。尤其是在不知道表定义的情况下。在旁注中,insert语句应该始终定义列的列表。如果列的顺序位置发生更改,则插入操作将失败或以静默方式将值插入错误的列。是的,此select语句工作正常。时间戳和日期时间不可比较。如果您在问题中发布目标表定义,我想您会得到更好的帮助。有关时间戳和日期时间使用的更多信息,请参阅