需要在完成1年后禁用数据库(SQL Server)中的用户。
为此,我有以下查询,该查询将由作业及时执行。
update TOCustDetails
set IsActive = 0
where DATEDIFF(DAY,CreatedOn,(DATEADD (YEAR,1,CreatedOn))) >= 365
但它失败的几点如下:
1.闰年处理没有完成,人们可以通过检查年份来完成,我知道
我不喜欢365左右的硬编码
3.它也不准确,因为我至少需要准确度达到秒。
+/- 1秒延迟就可以了。
有人可以就此提出建议吗?
答案 0 :(得分:1)
根据您的问题,您正在尝试检查有效期是否已过,所以请到期日期并检查是否已经发生如下:
DATEADD(YEAR,1,CreatedOn) <= getdate()
此处我们正在计算DATEADD(YEAR,1,CreatedOn)
的到期日期,它将与CreatedOn一样准确,并将其与当前日期getdate()
进行比较