You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在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/20242024-09-01 00:00:00.0002024-09-30 00:00:00.000
10/20242024-10-01 00:00:00.0002024-10-31 00:00:00.000
.........

这个查询会直接输出你需要的datetime格式首尾日期,完全匹配你的期望需求。

内容的提问来源于stack exchange,提问作者Programmermid

火山引擎 最新活动