将varchar数据类型转换为日期时间。超出范围的错误

时间:2016-12-01 09:01:18

标签: sql sql-server tsql

我的SQL查询出现了一个奇怪的错误。

这有效:

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')
  

导致将varchar数据类型转换为日期时间数据类型   在超出范围的价值。

唯一的区别是日期。 “10.12.2016”vs“17.12.2016”。 “Datum”列的类型为“datetime”。

我们使用SQL Server 2016。

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT CONVERT(DATETIME,'17.12.2016',103)
SELECT CONVERT(DATETIME,'10.12.2016',103)

答案 1 :(得分: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')