情景:
带有时间戳字段的大量记录(2百万)的日志表。 没有索引,除了ID作为主键,索引(或任何其他持久对象)创建是不可能的我想从昨天开始选择所有记录。
我知道有几种方法可以做到这一点,我只是希望以“最佳”的方式发表意见,而且最好的意思是最快的。
这里的诀窍是时间戳的“时间”,因为如果现在是上午11点,我会做类似的事情:
where modifiedDate between dateadd(dd,-1,getdate()) and getdate()
我只从昨天11点获取记录,并将从今天获得数据
它的sql 2005所以没有“Date”数据类型
答案 0 :(得分:5)
SELECT *
FROM myTable
WHERE modifiedDate >= dateadd(day,datediff(day,0,GETDATE()),-1)
AND modifiedDate < dateadd(day,datediff(day,0,GETDATE()),0)
带演示的
答案 1 :(得分: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))