SQL Server 2008 - 如果日期早于 60 天,则更新字段

SQL Server 2008 - update a field if date is older than 60 days

我的 user_Group table 中有三个字段:Banner_flag、warning_Date1 和 warning_Date2

我想做的是将 warning_Date2 更新为今天的日期,并且如果 warning_Date1 中的日期超过 60 天并且什么也不做,则将 banner_flag 设置为 = '2'对于那些不符合这个标准的人。

我很确定我需要一份案例陈述,但我无法有效地编写它。感谢任何帮助,谢谢。

在一条更新语句中可以做到,使用DATEDIFF

UPDATE user_Group SET Banner_flag = 2, warning_Date2 = GETDATE() 
WHERE DATEDIFF(DAY, warning_Date1, GETDATE()) >= 60 
      AND Banner_flag < 2 --This subject to your mechanism

检查以下查询,

UPDATE user_Group 
SET Banner_flag = '2', warning_Date2 = GETDATE()
WHERE warning_Date1  > DATEADD(d, -60, GETDATE())

可以设置一个作业来更新table。 运行 每天或每小时或每分钟一次,或其他。

不过,我认为使用视图或计算列更容易。首先将现有的 warning_date2banner_flag 列重命名为 _warning_date2_banner_flag 之类的名称,然后:

alter table t add warning_date2 as
    (case when dateadd(day, 60, warning_date1) <= cast(getdate() as date)
          then cast(getdate() as date) else _warning_date2
     end);

alter table t add banner_flag as
    (case when dateadd(day, 60, warning_date1) <= cast(getdate() as date)
          then '2' else _banner_flag
     end);