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

时间:2015-05-14 10:39:38

标签: sql .net sql-server case

我的user_Group表中有三个字段:Banner_flag,warning_Date1& warning_Date2

我想要做的是将warning_Date2更新为今天的日期&如果warning_Date1中的日期超过60天,也会将banner_flag设置为='2',并且对不符合此条件的日期不执行任何操作。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

检查以下查询,

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