2012-10-13 38 views
2

好吧,这让我几乎疯了。我已经尝试使用CURRENT_TIMESTAMP转换,转换子选择,但不断收到此错误:因为日期时间不能正常工作

从字符串转换datetime时转换失败。

这有什么问题?

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

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

+0

“SELECT Cast('2012-10-13 13:02:08.000'AS datetime)”是否返回错误?插入语句实际上比解决转换错误所需的信息多得多。特别是不知道表定义。注意,插入语句应该总是定义列的列表。如果列的顺序位置发生更改,则插入操作可能会失败或无提示地将值插入错误的列中。 – brian

+0

是的,这个select语句工作正常。 – Samuelitor

+0

时间戳和日期时间不具有可比性。如果您在问题中发布目标表定义,我认为您会得到更好的帮助。有关时间戳和日期时间使用的更多信息,请参阅http://blogs.devhorizo​​n.com/reza/2005/07/30/timestamp-vs-datetime-data-types-in-sql-server/ –

回答

0

如果您有SET DATEFORMAT DMY,您将得到分析yyyy-mm-dd格式的错误,因为SQL Server会尝试将其读为yyyy-dd-mm!从SQL Server 2012开始,dateformat将专门针对xxxx-xx-xx格式而被忽略,但现在,最好使用YYYYMMDD格式或日期时间,还可以使用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') 
+0

我试过了建议,但它说同样的确切的事情。 :/ – Samuelitor

0

也许吧?

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

0

原来使用GETDATE(),而不是铸造的当前日期时间什么工作了。

相关问题