如何使用sql获取前一天的记录?

时间:2012-02-14 16:00:43

标签: sql sql-server-2005 tsql

我需要上一天的所有记录吗?

你好

Select * from table1 where tabledate > getdate() -1 

使用此查询,我需要在午夜之后运行才能获得准确的结果。我需要在白天运行它并获取前一天的所有记录。

5 个答案:

答案 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)