You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL查询以获取2022年各月份的天数?

解决方案

你可以使用递归CTE生成2022年的所有月份,再结合EOMONTH函数获取每个月的天数,具体查询如下:

WITH Months2022 AS (
    -- 初始化2022年1月1日
    SELECT DATEFROMPARTS(2022, 1, 1) AS MonthStart
    UNION ALL
    -- 递归生成后续每个月的第一天
    SELECT DATEADD(MONTH, 1, MonthStart)
    FROM Months2022
    WHERE MonthStart < DATEFROMPARTS(2022, 12, 1)
)
SELECT 
    DATENAME(MONTH, MonthStart) AS 月份名称,
    MONTH(MonthStart) AS 月份编号,
    DAY(EOMONTH(MonthStart)) AS 当月天数
FROM Months2022
ORDER BY 月份编号;

说明

  1. 递归CTE Months2022:从2022年1月1日开始,每次递增一个月,生成全年12个月份的第一天。
  2. 日期函数解析:
    • DATENAME(MONTH, MonthStart):获取月份的英文名称(若需要中文名称,可在查询前添加SET LANGUAGE Chinese;,此时会返回“一月”“二月”等中文名称)
    • MONTH(MonthStart):获取月份的数字编号
    • DAY(EOMONTH(MonthStart)):通过EOMONTH获取当月最后一天,再用DAY提取天数。EOMONTH仅在SQL Server 2012及以上版本可用,若使用更早版本,可替换为DAY(DATEADD(DAY, -1, DATEADD(MONTH, 1, MonthStart)))
  3. 排序:按月份编号排序确保结果顺序正确。

输出示例

月份名称月份编号当月天数
January131
February228
March331
April430
May531
June630
July731
August831
September930
October1031
November1130
December1231

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:05:23