这条SQL行是说前一天还是第二天?

时间:2013-07-17 12:26:45

标签: sql sql-server

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

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

2 个答案:

答案 0 :(得分:6)

这意味着昨天。

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

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

有关详细信息,请参阅the documentation

DATEDIFF ( datepart , startdate , enddate )

答案 1 :(得分: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;