最佳答案
如果没有日历表,则可以使用临时提示表
示例
Declare @Date1 date = '2018-01-01'
Declare @Date2 date = GetDate()
Select [Month] = D
,[Eomonth] = case when EOMONTH(D)>@Date2 then convert(date,GetDate()) else EOMONTH(D) end
From (
Select Top (DateDiff(Month,@Date1,@Date2)+1)
D=DateAdd(Month,-1+Row_Number() Over (Order By (Select Null)),@Date1)
From master..spt_values n1
) A
返回
Month Eomonth
2018-01-01 2018-01-31
2018-02-01 2018-02-28
2018-03-01 2018-03-31
2018-04-01 2018-04-30
2018-05-01 2018-05-31
2018-06-01 2018-06-30
2018-07-01 2018-07-31
2018-08-01 2018-08-31
2018-09-01 2018-09-30
2018-10-01 2018-10-31
2018-11-01 2018-11-30
2018-12-01 2018-12-31
2019-01-01 2019-01-31
2019-02-01 2019-02-13 <-- Today's date
关于sql-server - 如何生成具有开始月份日期和结束月份日期的日历表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681444/