基于上次表更新的日期变量-SQL Server



我正试图根据表的最后运行日期"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;

最新更新