2010-12-08 211 views

回答

3

用途:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > DATEADD(hh, 4, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)) 

此:

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 

...將在當天午夜返回DATETIME。所以外面的DATEADD在午夜的那個時間增加了四個小時,在今天凌晨4點給你一個DATETIME。

參考:

1

嘗試

SELECT * FROM myTable 
WHERE myDateTimeField > 
     DateAdd(hour, 4, DateAdd(day, DateDiff(day, 0, getdate()), 0)) 
+0

@omg,您快速 – 2010-12-08 02:18:21

1

而只是爲了是不同的,並且可以說是較短的/更易讀比其它產品:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > 
     cast(convert(varchar, getdate(), 101) + ' 4AM' as datetime) 

當然,你可能並不是真的想要對4AM進行硬編碼,但是如果你這樣做,這種方式在傳達你的意圖方面是非常明顯的。

+0

FYI:日期截斷的最快方法SQL Server將使用DATEADD/DATEDIFF方法。 – 2010-12-08 02:31:43