2016-12-01 63 views
0

私のSQLクエリに異常なエラーがあります。varcharデータ型からdatetimeへの変換。範囲外エラー

この作品:

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"対 "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) 
関連する問題