所以我有一个正在工作的存储过程,除了它如何计算某个字段。在使用的表上是一个名为的字段,它的格式DeliveryYearMonth
只是简单的。YYYYMM
我尝试将当前月份的信息与上个月的信息进行比较,因此我创建了以下两个变量。
DECLARE @CURDate VARCHAR(50) -- Current time (YYYYMM)
DECLARE @MAGDate VARCHAR(50) -- YearAgo Time (YYYYMM)
SET @CURDate = cast((select max(DeliveryYearMonth) from dbo.datatable) as varchar)
SET @MAGDate = cast((substring(@CURDate,1,4)) as varchar) --For current year
+ cast((substring(@CURDate,5,2) - 1) as varchar) -- To get previous month
除非月份是一月,否则这一切都很好,花花公子,因此月份将变为 00,而年份将保持不变。
因此,我尝试使用 if 语句来澄清这一点。
if(substring(@MAGDate,5,2)) = '00'-- If current Month is January
begin
Set @MAGDate = cast((substring(@CURDate,1,4) - 1) as varchar) --For previous year
+ '12' -- December
end
(@MAGDate)
即使IF
陈述不正确,这总是会破坏 Month Ago Date 。我不知道为什么。
谢谢