2016-12-01 1 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"vs "17.12.2016". 열 "Datum"의 유형이 "datetime"입니다.

우리는 2016 년

당신이 날 도울 수있는 SQL 서버를 사용합니까?

+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) 
관련 문제