先得&;sql中datetime格式的未来12个月的最后日期

先得&;sql中datetime格式的未来12个月的最后日期,sql,sql-server,calendar,Sql,Sql Server,Calendar,我正在尝试获取从运行报告/查询之日起的未来12个月的第一个日期和最后一个日期。我可以使用以下查询获取未来12个月的日期,但无法获取第一个和最后一个日期。任何关于如何做到这一点的建议都将不胜感激 SELECT STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/' + STR(YEAR(DATEADD(mm,Number,GETDATE())),4),DATEPART(MM,'january '+'01 1900') FROM Master.

我正在尝试获取从运行报告/查询之日起的未来12个月的第一个日期和最后一个日期。我可以使用以下查询获取未来12个月的日期,但无法获取第一个和最后一个日期。任何关于如何做到这一点的建议都将不胜感激

SELECT STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/'
      + STR(YEAR(DATEADD(mm,Number,GETDATE())),4),DATEPART(MM,'january '+'01 1900')
   FROM Master.dbo.spt_values
  WHERE NAME IS NULL
    AND Number BETWEEN 0 AND 11
但结果是:

但我所期望的是:


假设支持
EOMONTH
功能,请使用

SELECT dateadd(day,1,dateadd(month,number-1,EOMONTH(getdate()))) as mth_start,
dateadd(month,number,EOMONTH(getdate())) as mth_end
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11
请尝试此查询

   SELECT 
CONVERT(datetime,  STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number,GETDATE())),4)) firstdate,
dateadd(day,-1,CONVERT(datetime, STR(MONTH(DATEADD(mm,Number+1,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number+1,GETDATE())),4))) lastdate
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11

要获取当月的最后一个日期,我们可以从下个月的第一个日期中删除一天。

可能重复@TabAlleman。。链接的问题是为博士后准备的。这太完美了。谢谢你的帮助。