当max(BCASTdate -120)<=日期时更新字段

时间:2019-04-01 10:41:24

标签: sql tsql sql-server-2012

我有一个sql表,当BC_DATE减去120天小于等于派生日期时,我需要将MIGRATE字段更新为“ M” 这应该是我的输出

 BC_DATE        Migrate Flag
 2018-09-09       M
 2018-11-01       M
 2018-12-21       M
 2019-01-13      NULL
 2019-02-13      NULL
 2019-03-13      NULL

 declare @date int null
 set @date = '20190401'

 update table 
 set Migrate_flag = 'M'
 when max(convert(varchar,dateadd(day,-120,[BCAST DATE]),112)) < = @date

请更正我的更新语句,以使其正常工作。

1 个答案:

答案 0 :(得分:1)

我想你只是想要

 update table 
     set Migrate_flag = 'M'
     where [BCAST DATE] < dateadd(day, -120, convert(date, convert(varchar(255), @date)));

为了进行比较,没有理由将日期转换为字符串。

但是您为什么要@date成为int?您只需将其声明为date

declare @date date;
set @date = '20190401'