一種簡單的方法是使用符合表和產生象下面這樣:
declare @P_Required_Date date = '2015-05-01'
declare @P_Month_Rang int = 4
Select top (@P_Month_Rang) Dts = DateAdd(month, -(Row_Number() over(order by (Select NULL))-1), @P_Required_Date) from
master..spt_values s1, master..spt_values s2
輸出作爲如下:
+------------+
| Dts |
+------------+
| 2015-05-01 |
| 2015-04-01 |
| 2015-03-01 |
| 2015-02-01 |
+------------+
你的CTE的方法:
declare @P_Required_Date date = '2015-05-01'
declare @P_Month_Rang int = 4
;with Date_Months as
(
Select @P_Required_Date as Dates, 1 as Levl
Union all
Select DateAdd(MONTH,-1, Dates), Levl+1 as Levl from Date_Months
where Levl < @P_Month_Rang
)
Select convert(varchar(10), dates, 103) from Date_Months
要轉換爲您的dd-mm-yyyy格式,一種方法是使用選項103進行轉換或使用格式。
可能希望顯示怎麼辦DD -MM-YYYY格式,如指定在這個問題中......知道的也很有用。 – pmbAustin
用正確的格式更新了答案 –
@KannanKandasamy很棒。感謝 – SAL