首页 > 解决方案 > 以日期时间格式在 sql 中获取接下来 12 个月的第一个和最后一个日期

问题描述

我正在尝试从报告/查询运行之日起获取接下来 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

但它给出的结果是:

在此处输入图像描述

但我期望的是:

在此处输入图像描述

标签: sqlsql-servercalendar

解决方案


假设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

推荐阅读