我有一个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
请更正我的更新语句,以使其正常工作。
答案 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'