2

我们有一个旧的 sql 脚本,它看起来从前一天获取数据。因此,在我们的表中,我们有一个 DatePlaced 列,我们希望能够获取从它运行到前一天的所有记录。谢谢你的帮助。

where  DATEDIFF(DAY,[DatePlaced],GETDATE()) = 1
4

2 回答 2

6

是昨天的意思。

今天是2013-07-17。我已经运行了以下查询来验证:

select datediff(day,'2013-07-16',getdate()) --returns 1
select datediff(day,'2013-07-18',getdate()) --returns -1

有关更多信息,请参阅文档

DATEDIFF ( datepart , startdate , enddate )
于 2013-07-17T12:29:54.000 回答
5

呃,不要这样。将函数应用于列意味着任何索引都相对无用。要获取昨天(或任何范围)的数据,请尝试:

DECLARE @today DATE = SYSDATETIME();

...
  WHERE DatePlaced >= DATEADD(DAY, -1, @today)
    AND DatePlaced <  @today;

如果您使用的是 SQL Server 2005 等旧版本,则改为:

DECLARE @today DATETIME;
SET @today = DATEDIFF(DAY, 0, GETDATE());

...
  WHERE DatePlaced >= DATEADD(DAY, -1, @today)
    AND DatePlaced <  @today;
于 2013-07-17T12:31:47.123 回答