我正试图根据表的最后运行日期"b"创建一个日期变量。也就是说,与此查询获取的日期有4个月的延迟:
select top 1 rundate from b
它生成的日期为"202003"。
这是我试图生成可变日期的代码:
declare @four_month_lag_from_table_update varchar (6)
set @four_month_lag_from_table_update = CAST( year((select top 1 rundate from b)) as varchar(4)) +
right('00' + (select top 1 rundate from b)-4, 2)
select @four_month_lag_from_table_update
我得到错误代码"从字符串转换日期和/或时间时转换失败。">
预期结果是在上次运行日期前4个月,因此如果上次运行日期是202003,预期结果是201911。
请告诉我我做错了什么?
如果您想要"最后"的摘要,请使用order by
或聚合函数:
select @rundate = max(rundate)
from b;
你的"约会"听起来像一串。如果你想在转换为日期并转换回来之前有四个月的时间:
select @rundate = format(dateadd(month, -4,
max(convert(date, concat(rundate, '01')))
), '%y%M'
)
from b;