将日期范围转换为行集

时间:2017-10-06 14:56:25

标签: sql postgresql data-science

我正在尝试使用具有与此类似的结构的表:

ID      START_DATE  END_DATE
1111    01/01/14    06/01/14
1111    08/01/14    12/01/14
1111    01/01/15    03/01/15
1111    05/01/15    11/01/15

获取一个结构,其中连续的行包含START_DATE和END_DATE之间的日期,包括日期:

ID      DATE_FIELD
1111    01/01/14
1111    02/01/14
1111    03/01/14
1111    04/01/14
1111    05/01/14
1111    06/01/14
1111    08/01/14
1111    09/01/14
1111    10/01/14
1111    11/01/14
1111    12/01/14
1111    01/01/15
1111    02/01/15
1111    03/01/15
1111    05/01/15
1111    06/01/15
1111    07/01/15
1111    08/01/15
1111    09/01/15
1111    10/01/15
1111    11/01/15

1 个答案:

答案 0 :(得分:1)

在横向连接中使用函数generate_series(),即对于原始表的每一行:

select id, d::date as date_field
from my_table, 
generate_series(start_date, end_date, interval '1 day') d;

SqlFiddle