【问题标题】:Best Way to Find Records Created or Modified in the Past "X" Days?查找过去“X”天内创建或修改的记录的最佳方法?
【发布时间】:2014-11-15 04:50:16
【问题描述】:

我只想从表中选择在过去“X”天(比如 5 天)内添加或修改的记录。

Accounts 表有两列:CreateWhen 和 UpdateWhen。

我正在使用以下内容:

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

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

【问题讨论】:

  • SQL 什么? MySQL? SQL 服务器?其他数据库引擎?您应该更新标签以包含其中之一。
  • 对不起,我没有指定,但是是的,它是 MS SQL 2008。
  • 好的。我已经更新了您问题中的标签(MS SQL 是 Sql Server)。
  • 时间呢?是否应该考虑在内?如果是下午 3 点,是否应该显示 5 天前但下午 2 点的记录?
  • @Andrew,我并不真正担心时间,因为我不认为这对时间特别敏感。只是想回到 2,3 或 X 天(无论决定如何)。

标签: sql sql-server datediff getdate


【解决方案1】:

你没有说你使用的是什么数据库引擎。以下是适用于 SQL Server 的解决方案:

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

它使用DATEADD 函数,允许您向DateTime 值添加不同的时间间隔。在此示例中,您添加了 5 天(这就是 d 的第一个参数)。

你也可以换一种方式:在GETDATE() 上加上-5 天,然后直接与UpdateWhenCreateDate 比较:

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

选择一个你认为更易读、更容易理解的。

【讨论】:

  • 对不起,我使用的是 MS SQL。