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

如何在Exasol中生成两日期间的日期列表(对标PostgreSQL实现)

在Exasol中生成日期序列(替代PostgreSQL的generate_series)

当然可以!Exasol虽然没有PostgreSQL里那种直接开箱即用的generate_series函数,但咱们有几种简单的方式实现完全一样的效果,生成两个日期之间的所有日期列表。

先回顾一下你提到的PostgreSQL实现:

在PostgreSQL中,生成两个日期之间的所有日期列表相当简单:

select generate_series('2013-01-01'::date, '2013-01-06'::date, '1 day'::interval)::date i;

输出结果:

i
----------
2013-01-01
2013-01-02
2013-01-03
2013-01-04
2013-01-05
2013-01-06

下面是两种在Exasol中实现相同结果的方法:

方法1:使用递归CTE

这是最直观的方式,通过递归逐步生成每个日期:

WITH RECURSIVE date_series AS (
    -- 起始日期
    SELECT DATE '2013-01-01' AS i
    UNION ALL
    -- 每次递归增加1天
    SELECT i + INTERVAL '1' DAY
    FROM date_series
    -- 递归终止条件:不超过结束日期
    WHERE i < DATE '2013-01-06'
)
-- 输出所有日期
SELECT i FROM date_series;

方法2:使用Exasol内置的NUMBERS表

Exasol提供了NUMBERS表来生成连续整数,我们可以基于它转换为日期序列:

SELECT 
    DATE '2013-01-01' + (level - 1) * INTERVAL '1' DAY AS i
FROM (
    -- 生成从1开始的N个整数,N是日期差+1(包含首尾日期)
    SELECT LEVEL
    FROM NUMBERS(1, DATEDIFF('DAY', DATE '2013-01-01', DATE '2013-01-06') + 1)
);

两种方法的输出结果都和PostgreSQL的示例完全一致:

i
----------
2013-01-01
2013-01-02
2013-01-03
2013-01-04
2013-01-05
2013-01-06

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:37:35