需要禁用数据库(SQL Server)的用户在1年的确切完成。
为此,我有以下查询,该查询将由作业及时执行。
update TOCustDetails
set IsActive = 0
where DATEDIFF(DAY,CreatedOn,(DATEADD (YEAR,1,CreatedOn))) >= 365
但它在以下几个方面是失败的:
1. 闰年处理没有完成,可以通过检查年份来完成,我知道
2. 我不喜欢像365之类的硬编码
3.它也不准确,因为我需要至少达到秒的精度水平。+/- 1秒的延迟可以。
根据您的问题,您正在尝试检查过期日期是否已过,因此获取过期日期并检查是否发生过,如下所示:
DATEADD(YEAR,1,CreatedOn) <= getdate()
这里我们正在计算DATEADD(YEAR,1,CreatedOn)
的到期日期,它将与CreatedOn一样准确,并将其与当前日期getdate()
进行比较