我有一个包含列的表
TypeExame, DateExame
如何使用(Now-DateExame)>选择所有记录? = 365天?
答案 0 :(得分:4)
答案 1 :(得分:3)
如果你有一个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)
基本上,修改后的版本使用the DATEADD/DATEDIFF method截断datetime
值进行小调整,同时减去365天。
但是,如果您的所有DateExame
值都是没有时间部分的日期,那么这个更简单的版本也可以正常运行:
WHERE DateExame <= DATEADD(DAY, -365, GETDATE())
也就是说,删除GETDATE()
的结果的时间部分是完全没必要的。
答案 2 :(得分:1)
试试这个:
select *
from MyTable
where datediff (day, DateExame, getdate()) >= 365
通过使用Datediff功能,您可以减去两个日期。你可以把第一个参数作为分钟,日,月,年等传递。