postgres 中行的日期范围

Ami*_*mir 1 sql postgresql date

我在 postgres 中有一张这样的表:

ID 开放日期 关闭日期
5 2006-08-04 2019-12-31

他们之间相隔4897天。我需要将日期范围改为 date 以便每天有一条记录。例如:

ID 开放日期 关闭日期 有效日期
5 2006-08-04 2019-12-31 2006-08-04
5 2006-08-04 2019-12-31 2006-08-05
5 2006-08-04 2019-12-31 2006-08-06
... ………… ………… …………
5 2006-08-04 2019-12-31 2019-12-31

我尝试了这里提供的查询,如下所示:

SELECT
    id,
    open_date,
    close_date,
    open_date + seq.seqnum * interval '1 day' AS valid_date,
  FROM
    TAB1
    LEFT JOIN (
        SELECT
            row_number() over () AS seqnum
        FROM
            TAB1) seq ON seqnum <= (close_date - open_date)
         )
Run Code Online (Sandbox Code Playgroud)

TAB1 包含 600 行。运行此查询后,它会生成正确的记录,但每个 id 最多只能生成 600 条记录。这意味着此日期范围仅限到 2008 年 6 月 8 日

Gor*_*off 6

在 Postgres 中,您可以使用generate_series()

select t1.*, gs.valid_date
from tab1 t1 cross join lateral
     generate_series(t1.open_date, t1.close_date, interval '1 day') as gs(valid_date);
Run Code Online (Sandbox Code Playgroud)