2016-12-01 112 views
0

我有一個奇怪的錯誤與我的SQL查詢。將varchar數據類型轉換爲日期時間。超出範圍的錯誤

這工作:

INSERT INTO tbl_SomeTable(Send_Type,Remote_Eml,Cover_Subj,Cover_Note,AtnId,StandortEinsatzValue,Standort,KundenNr,AtnTel,Name,Strasse,AtnName,AreaManagerContact,Datum,PLZOrt) 
VALUES ('2', '', '', '','02832','1','Replaced','2001158207','Replaced','Real','Replaced','Replaced','Replaced','10.12.2016','15745 Replaced') 

這給了我一個錯誤:

INSERT INTO tbl_SomeTable(Send_Type,Remote_Eml,Cover_Subj,Cover_Note,AtnId,StandortEinsatzValue,Standort,KundenNr,AtnTel,Name,Strasse,AtnName,AreaManagerContact,Datum,PLZOrt) 
VALUES ('2', '', '', '','02832','1','Replaced','2001158207','Replaced','Real','Replaced','Replaced','Replaced','17.12.2016','15745 Replaced') 

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

唯一的區別是日期。 「10.12.2016」vs「17.12.2016」。 「Datum」列是「datetime」類型。

我們使用SQL Server 2016

你能幫助我嗎?

+1

'17'超出了月份值的範圍,並且您的引擎可能將日期解析爲en-US。不要使用像「10.12.2016」這樣的文化依賴字符串來插入數據。唯一被認可的獨立字符串格式是「20161210」(ISO沒有分隔符)。更好的是,使用實際鍵入的'DATETIME'參數。 –

+1

SELECT CONVERT(VARCHAR,Datum,101)FROM表 – Chanukya

+0

這些註釋都應該有效。使用文字「20161212」,或者使用帶有適當格式掩碼號的「CONVERT」。 –

回答

0

您需要使用CONVERT這一點。如下所示替換您的查詢。

還在DB中維護標準化的日期格式。

INSERT INTO tbl_SomeTable(Send_Type,Remote_Eml,Cover_Subj,Cover_Note,AtnId,StandortEinsatzValue,Standort,KundenNr,AtnTel,Name,Strasse,AtnName,AreaManagerContact,Datum,PLZOrt) 
VALUES ('2', '', '', '','02832','1','Replaced','2001158207','Replaced','Real','Replaced','Replaced','Replaced',CONVERT(DATETIME,'10.12.2016',103),'15745 Replaced') 

INSERT INTO tbl_SomeTable(Send_Type,Remote_Eml,Cover_Subj,Cover_Note,AtnId,StandortEinsatzValue,Standort,KundenNr,AtnTel,Name,Strasse,AtnName,AreaManagerContact,Datum,PLZOrt) 
VALUES ('2', '', '', '','02832','1','Replaced','2001158207','Replaced','Real','Replaced','Replaced','Replaced',CONVERT(DATETIME,'17.12.2016',103),'15745 Replaced') 
0

試試這個:

SELECT CONVERT(DATETIME,'17.12.2016',103) 
SELECT CONVERT(DATETIME,'10.12.2016',103) 
相關問題