SQL 查询日期函数以动态获取历史记录中的行

SQL Query on Date function to fetch rows in history dynamically

团队, 我正在寻找一个日期函数,当我在程序中使用它时,它应该自动获得所需的参数范围。 例如:查询应该显示从今天到历史 90 天的结果。 喜欢

select * from Table
where dataFunction(currDate, 90)

其中 currDate 应该考虑今天的日期并拉出过去 90 天的所有行。

我正在使用 MSSMS v17.5

您寻求 DATEADD() 函数。

不要为此编写函数。它们不能很好地与索引配合使用,这切入了数据库性能的核心。您需要在 WHERE 子句中使用 built-in 项...更像这样:

select * 
from Table
where Table.DateColumn BETWEEN DATEADD(d, -90, current_timestamp) AND current_timestamp

如果您真的只想使用日期,而不是完整的 DateTime 值,则转换为日期:

select * 
from Table
where Table.DateColumn BETWEEN DATEADD(d, -90, cast(current_timestamp as date)) AND cast(current_timestamp as date)

DATEADD() 功能满足您的需求。

<DATE_FROM_TABLE> 替换为您要比较的字段:

SELECT * 
FROM Table
WHERE <DATE_FROM_TABLE> >= DATEADD(DAY, -90, CAST(GETDATE() AS DATE));

这是您要搜索的查询:

Select   *
from     Table t
where    t.date >= dateadd(day, -90, getdate())