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

数据库中如何准确定位每个季度最后一个月的首日

问题解决方案

你当前编写的WHERE条件仅能筛选出当前自然季度的全部日期,无法实现定位每个季度最后一个月首日的需求。季度最后一个月固定为每年的3、6、9、12月,你可以按以下逻辑修改查询条件:

方案1:直观判断(适配所有支持日期函数的SQL引擎)

直接通过月份、日期值判断:

WHERE
    DATEPART(MONTH, d3.[day_date]) IN (3,6,9,12)
    AND DATEPART(DAY, d3.[day_date]) = 1

方案2:季度动态计算(SQL Server语法,适配跨年/特殊日历场景)

通过季度偏移计算,无需硬编码月份,兼容性更强:

WHERE
    d3.[day_date] = DATEADD(mm, 2, DATEADD(qq, DATEDIFF(qq, 0, d3.[day_date]), 0))

逻辑说明:

  • 内层DATEADD(qq, DATEDIFF(qq, 0, d3.[day_date]), 0)会计算出当前日期所属季度的第一天,例如2020-04-15所属季度的第一天是2020-04-01
  • 在此基础上加2个月,即可得到该季度最后一个月的首日,也就是2020-06-01

效果验证

筛选后返回的日期格式统一为YYYY-MM-01,且月份固定为3/6/9/12,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:05