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

如何在BigQuery中获取每月20日至25日的日期范围?

在BigQuery中获取每月20日至25日日期范围的高效方法

不需要为每个月单独创建CTE再用UNION ALL合并,这里有两种更简洁高效的方案:

方法一:生成全量日期后筛选

先生成覆盖目标时间段的所有日期,再筛选出日部分在20-25之间的日期:

WITH date_range AS (
  SELECT date
  FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY)) AS date
)
SELECT date
FROM date_range
WHERE EXTRACT(DAY FROM date) BETWEEN 20 AND 25
ORDER BY date;

你可以根据需求调整GENERATE_DATE_ARRAY的起始和结束日期,比如把2020-01-01换成需要的最早日期,CURRENT_DATE()换成指定的结束日期。

方法二:按月生成目标日期区间

先生成每个月的起始日期,再基于此生成当月20-25日的日期:

WITH months AS (
  SELECT DATE_TRUNC(date, MONTH) AS month_start
  FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 MONTH)) AS date
),
monthly_dates AS (
  SELECT DATE_ADD(month_start, INTERVAL 19 + offset DAY) AS target_date
  FROM months, UNNEST(GENERATE_ARRAY(0, 5)) AS offset
)
SELECT target_date
FROM monthly_dates
WHERE target_date <= CURRENT_DATE() -- 过滤超出当前日期的未来日期
ORDER BY target_date;

这种方式直接针对每个月生成需要的日期,避免生成多余的日期数据,在日期范围较大时性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:55:23