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

BigQuery动态获取每月第四个周四的实现方法求助

解决方案:动态获取上月第四个周四

无需通过复杂的月份天数判断,直接通过**定位上月第一个周四,再叠加3周(21天)**的方式,就能精准得到第四个周四,无论当月有4个还是5个周四。

简化后的BigQuery代码

SELECT
  DATE_ADD(
    -- 计算上月的第一个周四
    DATE_ADD(
      DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH),
      INTERVAL (5 - EXTRACT(DAYOFWEEK FROM DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH)) + 7) % 7 DAY
    ),
    INTERVAL 21 DAY -- 加3周得到第四个周四
  ) AS fourth_thursday_of_previous_month;

代码逻辑说明

  1. 获取上月第一天:DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH) 直接得到上月1号。
  2. 定位第一个周四:
    • EXTRACT(DAYOFWEEK FROM ...) 取上月第一天的星期值(BigQuery中1=周日,5=周四)。
    • (5 - 星期值 +7) %7 计算从第一天到第一个周四的间隔天数(加7再取模是为了避免负数结果)。
    • 将间隔天数加到上月第一天,得到当月第一个周四。
  3. 推导第四个周四:第一个周四加21天(3周),即为当月第四个周四。

验证示例

  • 当CURRENT_DATE()为2023-12-07时,上月是2023年11月,返回结果为2023-11-23(正确的第四个周四)。
  • 当CURRENT_DATE()为2023-09-01时,上月是2023年8月,返回结果为2023-08-24(正确的第四个周四)。
  • 当CURRENT_DATE()为2023-03-01时,上月是2023年2月(仅4个周四),返回结果为2023-02-23(正确)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:35:33