0
所以我有一個存儲的過程,除了它如何計算某個字段的工作。在處理的表格中有一個名爲DeliveryYearMonth
的字段,其格式爲YYYYMM
。我嘗試將當前的月份信息與上個月的信息進行比較,因此我創建了以下兩個變量。SQL如果語句返回不正確
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
說法是不正確的。我無法弄清楚爲什麼。
感謝
爲什麼地球上不能只使用'DATE'類型?我會停止一切並立即轉換。 – Kermit
您使用的是什麼RDBMS?看起來像SQL Server。 –
爲什麼使用'CAST'將字符串轉換爲字符串? – Barmar