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

如何基于Quarter Dates表和当前日期精准查询对应季度开始日期?

如何根据当前日期从给定表中查询对应季度的开始日期?

我有如下表格:

Quarter Start
30/12/2016
31/03/2017
30/06/2017
29/09/2017
29/12/2017
30/03/2018
29/06/2018
28/09/2018
28/12/2018
29/03/2019
28/06/2019
27/09/2019
27/12/2019
27/03/2020
26/06/2020
25/09/2020
01/01/2021
02/04/2021
02/07/2021
01/10/2021
31/12/2021
01/04/2022
01/07/2022
30/09/2022
30/12/2022
24/03/2023
30/06/2023
29/09/2023
29/12/2023
29/03/2024
28/06/2024
27/09/2024
03/01/2025
04/04/2025
03/10/2025
02/01/2026
03/04/2026
03/07/2026
02/10/2026
01/01/2027
02/04/2027
02/07/2027
01/10/2027

我需要编写SQL语句,始终根据此表和当前日期查询出对应的当前季度开始日期。例如当前季度对应'09/12/2022'(注:表中对应日期为30/12/2022,可能为笔误),如何确保总能选中该日期?

非常感谢!

更新:尝试过的语句无效

我尝试了以下语句:

SELECT 
    quarter_start,
    EXTRACT (QUARTER FROM quarter_start)
FROM
    odwh_work.sdc_2027
WHERE
    EXTRACT (QUARTER FROM quarter_start) =  EXTRACT (QUARTER FROM current_date)
ORDER BY 1 DESC

但仍未返回目标日期。


解决方案

你的原SQL存在两个核心问题:

  • 仅匹配季度数,未限制年份,会返回所有年份中同季度的记录,无法定位到当前年份的季度
  • 如果quarter_start存储的是字符串类型(而非日期类型),EXTRACT函数无法正确解析日期,导致逻辑错误

针对这些问题,提供两种可行的SQL写法:

方法1:匹配当前年份和季度

先将字符串格式的日期转换为数据库可识别的日期类型,再同时匹配年份和季度:

SELECT quarter_start
FROM odwh_work.sdc_2027
WHERE 
    -- 转换日期格式(DD/MM/YYYY)并匹配年份
    EXTRACT(YEAR FROM TO_DATE(quarter_start, 'DD/MM/YYYY')) = EXTRACT(YEAR FROM CURRENT_DATE)
    -- 匹配当前季度
    AND EXTRACT(QUARTER FROM TO_DATE(quarter_start, 'DD/MM/YYYY')) = EXTRACT(QUARTER FROM CURRENT_DATE);

方法2:自动匹配当前日期所在的最近季度开始日期

无需手动匹配年份和季度,直接找到小于等于当前日期的最大季度开始日期,适配所有场景:

SELECT MAX(quarter_start) AS current_quarter_start
FROM odwh_work.sdc_2027
WHERE TO_DATE(quarter_start, 'DD/MM/YYYY') <= CURRENT_DATE;

说明

  • 如果你的quarter_start字段本身就是日期类型,可以去掉TO_DATE(quarter_start, 'DD/MM/YYYY'),直接使用quarter_start即可
  • 方法2更通用,即使当前日期处于季度中间,也能准确返回对应的季度开始日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:20:38