2012-10-13 40 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(),而不是鑄造的當前日期時間什麼工作了。

相關問題