如何在SQL中获取未来12个月每月的首尾日期(datetime格式)
获取未来12个月每月的首日期和尾日期(Datetime格式)
我来帮你搞定这个需求!你当前的查询已经能生成未来12个月的年月信息,但还没拿到每个月的首尾日期,咱们直接调整SQL就能实现目标:
SELECT -- 保留你原来的年月标识格式 STR(MONTH(DATEADD(mm, Number, GETDATE())), 2) + '/' + STR(YEAR(DATEADD(mm, Number, GETDATE())), 4) AS [年月], -- 生成当月第一天(Datetime格式) DATEFROMPARTS(YEAR(DATEADD(mm, Number, GETDATE())), MONTH(DATEADD(mm, Number, GETDATE())), 1) AS [月初日期], -- 生成当月最后一天(Datetime格式) EOMONTH(DATEADD(mm, Number, GETDATE())) AS [月末日期] FROM Master.dbo.spt_values WHERE NAME IS NULL AND Number BETWEEN 0 AND 11
关键逻辑说明:
DATEFROMPARTS(year, month, day):SQL Server的原生函数,直接通过年、月、日参数构造标准datetime类型日期,这里指定日为1,就能精准拿到当月第一天。EOMONTH(date):专门返回给定日期所在月份的最后一天,省去了手动计算“下个月第一天减1天”的繁琐,简洁又不容易出错。- 保留了你原本的
Number BETWEEN 0 AND 11逻辑,确保覆盖从当前月到未来11个月的共12个月份。
查询结果示例(和你期望的格式一致):
| 年月 | 月初日期 | 月末日期 |
|---|---|---|
| 09/2024 | 2024-09-01 00:00:00.000 | 2024-09-30 00:00:00.000 |
| 10/2024 | 2024-10-01 00:00:00.000 | 2024-10-31 00:00:00.000 |
| ... | ... | ... |
这个查询会直接输出你需要的datetime格式首尾日期,完全匹配你的期望需求。
内容的提问来源于stack exchange,提问作者Programmermid




