sql server查询找到1年的差异

时间:2014-03-23 05:21:08

标签: sql sql-server date datetime

需要在完成1年后禁用数据库(SQL Server)中的用户。
为此,我有以下查询,该查询将由作业及时执行。

update TOCustDetails
set IsActive = 0
where DATEDIFF(DAY,CreatedOn,(DATEADD (YEAR,1,CreatedOn)))  >= 365


但它失败的几点如下:
1.闰年处理没有完成,人们可以通过检查年份来完成,我知道 我不喜欢365左右的硬编码 3.它也不准确,因为我至少需要准确度达到秒。  +/- 1秒延迟就可以了。

有人可以就此提出建议吗?

1 个答案:

答案 0 :(得分:1)

根据您的问题,您正在尝试检查有效期是否已过,所以请到期日期并检查是否已经发生如下:

DATEADD(YEAR,1,CreatedOn) <= getdate()

此处我们正在计算DATEADD(YEAR,1,CreatedOn)的到期日期,它将与CreatedOn一样准确,并将其与当前日期getdate()进行比较