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_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);
我的 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_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);