繁体   English   中英

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

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

我的user_Group表中有三个字段: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

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

但是,我认为使用视图或计算列更容易。 首先将现有的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);

检查以下查询,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM