选择日期字段花费一年的记录

时间:2013-07-06 09:59:13

标签: sql-server

我有一个包含列的表

 TypeExame, DateExame

如何使用(Now-DateExame)>选择所有记录? = 365天?

3 个答案:

答案 0 :(得分:4)

select *
from MyTable
where datediff (day, DateExame, getdate()) >= 365

有关详细信息,请参阅DATEDIFFGETDATE

答案 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功能,您可以减去两个日期。你可以把第一个参数作为分钟,日,月,年等传递。