@ kmatyaszek 일반적으로 사용되는 "yyyy-mm-dd HH : mm : ss"날짜 형식은 SQL 서버에 의해 명확하게 파싱되지 않을 수도 있습니다. 문자열을 연결하여 SQL을 작성해야하는 경우 (René가 보여준 것처럼이 경우에는 필요하지 않음) ISO8601 형식을 사용해야합니다. 형식은 동일하지만 중간에 T가 있어야합니다. "yyyy-mm-ddTHH : mm : ss ".
http://msdn.microsoft.com/en-us/library/ms190977%28v=sql.90%29.aspx
"는 ISO 8601을 사용의 장점은 국제 표준이다. 또한,이 포맷을 사용 의해 지정된 시간 값은 모호하다. 또한,이 포맷은 아니다 에 영향을 받거나 SET DATEFORMAT 또는 SET LANGUAGE 설정에 의해 영향을받습니다. "
이유를 설명하기 위해이 재실행 할 수있는 SQL 스크립트를 사용해보십시오.
if object_id('tempdb..#Foo') is not null drop table #Foo;
create table #Foo(id int, d datetime)
-- Intend dates to be 12th Jan.
set dateformat ymd
insert into #Foo(id, d) values (1, '2012-01-12 01:23:45') -- ok
insert into #Foo(id, d) values (2, '2012-01-12T01:23:45') -- ok
set dateformat ydm
insert into #Foo(id, d) values (3, '2012-01-12 01:23:45') -- wrong!
insert into #Foo(id, d) values (4, '2012-01-12T01:23:45') -- ok
select * from #Foo order by id
if object_id('tempdb..#Foo') is not null drop table #Foo;