我的user_Group表中有三个字段:Banner_flag,warning_Date1& warning_Date2
我想要做的是将warning_Date2更新为今天的日期&如果warning_Date1中的日期超过60天,也会将banner_flag设置为='2',并且对不符合此条件的日期不执行任何操作。
我很确定我需要一个案例陈述,但我却无法有效地编写案例。任何帮助表示感谢,谢谢。
答案 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_date2
和banner_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())