2014-12-02 2 views
0

I를 아래와 같이 2 개 개의 방식으로 일시 삽입 할 :SQL 서버 : 날짜 시간 데이터 유형에 VARCHAR 데이터 형식의 변환이 범위를 벗어난 값 결과

를 표 : 기록 피트

create table ft 
(
    columndate datetime, 
    columntime datetime 
) 

삽입 : 기록 형식 1

insert into ft values('2014-12-25', '01:55:56'); 

삽입 : 2 포맷

012,341,168,

참고 : 예! 물론 첫 번째 열의 데이터는 columndate이고 두 번째 열의 데이터는 columntime이고 그 데이터 형식은 datetime입니다. 삽입의 형식 모두를 위해 나는 아래 그림에 표시 같은 오류가 점점 오전 :

오류 :

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

+0

25 시간이 오류 – Rajesh

+0

를주고있다 할 수있다 무엇 죄송합니다! 그것은 오타였습니다. 나는 사과한다. – MAK

+0

첫 번째 쿼리에서 'YYYY-MMM-DD' 형식으로 날짜를 입력하고 있지만 두 번째 삽입에서는 오류를 제공하는'DD-MM-YYYY'로 삽입을 제공합니다 – Rajesh

답변

3

그것은 모든 변환 및 데이터 유형에 관한 것입니다.

첫째, 암시 적 변환은 위험합니다. 그냥 알고,이 링크를 살펴 : How does SQL Server decide format for implicit datetime conversion?

나는 보통이 형식을 사용

: 단지 하루 저장하는 문제가되지 않지만 코멘트에 제안

'SS YYYYMMDD HH : mm를' , 날짜 형식과 시간 형식을 사용하는 것이 좋습니다.

datetime 형식으로 만 시간을 저장할 수 없습니다. 어떤 이유로 든 실제로이 작업을 수행해야하는 경우 datetime 만 사용할 수있는 옛날처럼 사용하고 19000101과 같은 기본 날짜를 사용하여 시간을 삽입해야합니다.

insert into ft values('2014-12-25', '01:55:56'); 

이있을 것 같은 뭔가 :

insert into ft values('20141225', '19000101 01:55:56'); 
관련 문제