我有一个有列的表
TypeExame, DateExame
如何选择 (Now-DateExame) > = 365 天的所有记录?
如果您有一个索引 on DateExame
,则设置这样的条件将启用它的使用:
SELECT *
FROM atable
WHERE DateExame <= DATEADD(DAY, -365, CAST(GETDATE() AS date))
;
以上引用了date
数据类型,这意味着您至少需要 SQL Server 2008 才能运行它。要使其在早期版本中工作,您可以像这样重写条件:
WHERE DateExame <= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - 365, 0)
基本上,修改后的版本使用DATEADD/DATEDIFF 方法来截断一个datetime
值,并稍作调整以同时减去 365 天。
但是,如果您的所有DateExame
值都是没有时间部分的日期,那么这个更简单的版本应该也可以工作:
WHERE DateExame <= DATEADD(DAY, -365, GETDATE())
也就是说,GETDATE()
完全没有必要删除 ' 结果的时间部分。
试试这个:
select *
from MyTable
where datediff (day, DateExame, getdate()) >= 365
通过使用 Datediff 函数,您可以减去两个日期。您可以将第一个参数传递为分钟、日、月、年等。