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())
团队, 我正在寻找一个日期函数,当我在程序中使用它时,它应该自动获得所需的参数范围。 例如:查询应该显示从今天到历史 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())