@kmatyaszek、「yyyy-mm-dd HH:mm:ss」日付形式は一般的に使用されていますが、SQL サーバーによって明確に解析されるとは限りません。連結文字列から SQL を作成する必要がある場合 (René が示したように、この場合は必要ありません)、ISO8601 形式を使用する必要があります。 "。
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;