在 Postgresql 中的日期范围之间插入日期

Raf*_*ael 2 sql postgresql

我已经搜索了很长一段时间,但找不到这个问题的答案:

我有一个 PostgreSQL 表,按以下方式暂存:

Start Date | End Date   |  Name   | Team
-----------+------------+---------+------
2017-10-01 | 2017-10-10 | Person  |   1
Run Code Online (Sandbox Code Playgroud)

我想要的是开始日期和结束日期之间的每一行都有相应的姓名和团队:

   Date     |  Name   |  Team
------------+---------+-------
2017-10-01  | Person  |   1
------------+---------+-------
2017-10-02  | Person  |   1
------------+---------+-------
2017-10-03  | Person  |   1
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 是否可以做到这一点?我目前正在运行 PostgreSQL 9.3。

小智 5

您可以generate_series()为此使用:

select t.dt::date, p.name, p.team
from person p, generate_series(p.start_date, p.end_date, interval '1' day) as t(dt)
order by t.dt::date;
Run Code Online (Sandbox Code Playgroud)

我已经没有 9.3 了,但我认为这也应该适用于旧版本。