SQL Server에서 지원하는 형식은 여러 가지가 있습니다 . CAST 및 CONVERT에 대한 MSDN 온라인 설명서를 참조하십시오 . 이러한 형식의 대부분은 어떤 설정을 사용 하느냐에 따라 달라 지므로 이러한 설정은 때때로 작동 할 수도 있고 그렇지 않을 수도 있습니다.
이를 해결하는 방법 은 SQL Server에서 지원 하는 (약간 적응 된) ISO-8601 날짜 형식을 사용 하는 것입니다.이 형식은 SQL Server 언어 및 날짜 형식 설정에 관계없이 항상 작동합니다 .
ISO-8601 형식 SQL Server에서 지원되는 두 가지 유형이있다 :
YYYYMMDD단지 날짜 (시간 부분 없음); 여기에주의하십시오 : 대시 없음! 매우 중요합니다! YYYY-MM-DD이다 NOT 당신의 SQL Server에서 DATEFORMAT 설정의 독립적 인 것 NOT 모든 상황에서 작동!
또는:
YYYY-MM-DDTHH:MM:SS날짜 및 시간-참고 :이 형식 에는 대시가 있지만 생략 할 수 있으며 T의 날짜와 시간 부분을 구분 기호 로 고정 합니다 DATETIME.
이것은 SQL Server 2000 이상에서 유효합니다.
구체적인 경우에는 다음 문자열을 사용하십시오.
insert into table1 values('2012-02-21T18:10:00', '2012-01-01T00:00:00');
주의를 기울여야합니다 (참고 : 12 시간 AM / PM 형식 대신 24 시간 국제 형식 을 사용해야합니다 ).
또는 SQL Server 2008 이상을 사용하는 경우 DATETIME2일반 대신 데이터 유형을 사용할 수 있으며 DATETIME현재 INSERT는 문제없이 작동합니다! :-) DATETIME2는 변환에서 훨씬 더 좋고 까다 롭지 않으며 SQL Server 2008 이상에서 권장되는 날짜 / 시간 데이터 형식입니다.
SELECT
CAST('02-21-2012 6:10:00 PM' AS DATETIME2), -- works just fine
CAST('01-01-2012 12:00:00 AM' AS DATETIME2) -- works just fine
왜이 주제 전체가 그렇게 까다 롭고 다소 혼란 스러운지 묻지 마십시오. 그것이 바로 그 방식입니다. 그러나 YYYYMMDD형식을 사용하면 SQL Server의 모든 버전과 SQL Server의 모든 언어 및 날짜 형식 설정에 적합해야합니다.