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

在ClickHouse中无需日历表按ID展开日期区间的方法

ClickHouse日期区间展开解决方案

直接用生成日期数组+数组展开的方式就能搞定,不用建日历表,具体两种写法适配不同ClickHouse版本:

方法一:使用generateDateArray(推荐,适用于较新版本)

SELECT 
    Id,
    date AS daily_date
FROM (
    SELECT 
        Id,
        startdate,
        endate,
        -- 生成从startdate到endate的每日日期数组
        generateDateArray(startdate, endate, INTERVAL 1 DAY) AS date_array
    FROM tabe
)
-- 将数组拆分为单行记录
ARRAY JOIN date_array AS date

方法二:兼容旧版本写法

如果你的ClickHouse版本不支持generateDateArray,用arrayMap配合range实现:

SELECT 
    Id,
    toDate(startdate + INTERVAL number DAY) AS daily_date
FROM (
    SELECT 
        Id,
        startdate,
        endate,
        -- 计算区间天数,生成偏移量序列
        range(toUInt32(endate - startdate) + 1) AS day_offsets
    FROM tabe
)
ARRAY JOIN day_offsets AS number

注意点

  • 确保startdate和endate是Date类型,要是DateTime类型先转成Date(用toDate(startdate)),避免时分秒干扰计算。
  • 提前过滤startdate > endate的无效数据,防止生成异常日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:22:13