我需要上一天的所有记录吗?
你好
Select * from table1 where tabledate > getdate() -1
使用此查询,我需要在午夜之后运行才能获得准确的结果。我需要在白天运行它并获取前一天的所有记录。
答案 0 :(得分:7)
在SQL Server 2005中,这通常是将日期时间转换为日期的最快方法:
DATEADD(day, DATEDIFF(day, 0, yourDate), 0)
在你的情况下,它只完成一次,所以这并不重要。但它确实提供了以下查询。
Select
*
from
table1
where
tabledate >= DATEADD(day, DATEDIFF(day, 0, getDate()) - 1, 0)
AND tabledate < DATEADD(day, DATEDIFF(day, 0, getDate()), 0)
答案 1 :(得分:1)
查看此页面。它是计算日期的绝佳资源。
答案 2 :(得分:0)
另一种方法是单独使用DATEDIFF
:
SELECT * FROM table1
WHERE DATEDIFF(DAY, tabledate, GETDATE()) = 1
前一天的任何时间都包含1天的日期。
答案 3 :(得分:0)
DECLARE @d SMALLDATETIME;
SET @d = DATEDIFF(DAY, 0, GETDATE());
SELECT <cols> FROM dbo.table1
WHERE tabledate >= DATEADD(DAY, -1, d)
AND tabledate < @d;
答案 4 :(得分:0)
试试这个:
your_field = cast(dateadd(D,-1,getdate()) as DATE)