@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;