2012-05-30 27 views
0

場景:從日誌表中獲取昨天的記錄

具有大量記錄(200萬)和時間戳記字段的日誌表。 除了ID作爲主鍵,索引(或任何其他持久性對象)的創建沒有索引出了問題

我要選擇從昨天的所有記錄。

我知道有幾種方法可以做到這一點,我只希望看到「最好」的方式,而我最好的意思是最快。

這裏的竅門是時間戳的「時間」,因爲如果現在是上午11時,我做這樣的事情:在11

where modifiedDate between dateadd(dd,-1,getdate()) and getdate() 

生病只能得到從昨天的記錄,並會得到今天

數據

它的SQL 2005,所以沒有 「日期」 數據類型

回答

5
SELECT * 
FROM myTable 
WHERE modifiedDate >= dateadd(day,datediff(day,0,GETDATE()),-1) 
    AND modifiedDate < dateadd(day,datediff(day,0,GETDATE()),0) 

SQL Fiddle無線th Demo

+0

非常感謝! – Diego

+0

對我來說就像一個魅力! – BustedSanta

1
SELECT * 
FROM mytable 
WHERE modifiedDate >= DATEADD(dd, -1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
     AND modifiedDate < CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
+0

感謝Quassnoi! +1你的方法確實奏效! – Diego