我们有一个旧的 sql 脚本,它看起来从前一天获取数据。因此,在我们的表中,我们有一个 DatePlaced 列,我们希望能够获取从它运行到前一天的所有记录。谢谢你的帮助。
where DATEDIFF(DAY,[DatePlaced],GETDATE()) = 1
我们有一个旧的 sql 脚本,它看起来从前一天获取数据。因此,在我们的表中,我们有一个 DatePlaced 列,我们希望能够获取从它运行到前一天的所有记录。谢谢你的帮助。
where DATEDIFF(DAY,[DatePlaced],GETDATE()) = 1
是昨天的意思。
今天是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 )
呃,不要这样。将函数应用于列意味着任何索引都相对无用。要获取昨天(或任何范围)的数据,请尝试:
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;