查找过去创建或修改的记录的最佳方式" X"天?

时间:2014-11-15 04:50:16

标签: sql sql-server datediff getdate

我希望只选择在过去“X”天内添加或修改过的表中的记录,比方说5天。

Accounts表有两列:CreateWhen和UpdateWhen。

我使用以下内容:

Select * from Accounts where CreateDate >= getdate() -5 or UpdateWhen >= getdate() -5

这是处理此请求的最有效方法吗?它似乎有效。

1 个答案:

答案 0 :(得分:1)

您没有说出您正在使用的数据库引擎。这里的解决方案应该适用于SQL Server:

SELECT *
FROM Accounts
WHERE DATEADD(d, 5, CreateDate) >= GETDATE()
OR DATEADD(d, 5, UpdateWhen) >= GETDATE()

它使用DATEADD功能,允许您为DateTime值添加不同的时间间隔。在此示例中,您将添加5天(d作为第一个参数的内容。)

您可以采用其他方式:将{-5}天添加至GETDATE()并直接与UpdateWhenCreateDate进行比较:

CreateDate >= DATEADD(d, -5, GETDATE())

选择一个您认为更易读且更易于理解的内容。