IIf( ((Year([f_periodo])*12)+Month([f_periodo]))
-((Year(Date())*12)+Month(Date()))<0,1,IIf( ((Year([f_periodo])*12)+Month([f_periodo]))
-((Year(Date())*12)+Month(Date()))=0,2,3)
) AS sts_exigible
类似的东西。
select case
when (datepart(year, [f_periodo]) * 12 + datepart(month, [f_periodo])) -
(datepart(year, getdate()) * 12 + datepart(month, getdate())) < 0 then 1
when (datepart(year, [f_periodo]) * 12 + datepart(month, [f_periodo])) -
(datepart(year, getdate()) * 12 + datepart(month, getdate())) = 0 then 2
else 3
end as sts_exigible
怎么样:
sign(datediff(month, f_periodno, current_timestamp)) + 2;
尝试一下:
declare @f_periodno datetime;
set @f_periodno = '20240101';
select sign(datediff(month, @f_periodno, current_timestamp)) + 2;
set @f_periodno = dateadd(day, -3, current_timestamp);
select sign(datediff(month, @f_periodno, current_timestamp)) + 2;
set @f_periodno = '20140101';
select sign(datediff(month, @f_periodno, current_timestamp)) + 2;
我同意最好自己搜索答案。如果我不喜欢逆向工程并简化您的表情,我可能会花点时间提供帮助。祝你好运。