首页 > 解决方案 > 如何在 PostgreSQL 中获取唯一的日期范围?

问题描述

这是我的数据行:

       start_dte        |        end_dte
------------------------+------------------------
 2018-08-01 00:00:00+00 | 2018-08-05 00:00:00+00
 2018-08-03 00:00:00+00 | 2018-08-05 00:00:00+00
 2018-08-09 00:00:00+00 | 2018-08-10 00:00:00+00
(3 rows)

我想得到这样的结果:

  [
    '2018-08-01',
    '2018-08-02',
    '2018-08-03',
    '2018-08-04',
    '2018-08-05',
    '2018-08-09',
    '2018-08-10',
  ]

我怎样才能做到这一点SQL?谢谢。

标签: postgresql

解决方案


这可能是解决方案:

select 
  distinct generate_series(start_date, end_date, '1 day'::interval)::date 
from 
  my_table
order by 
  generate_series asc;

输出:

      generate_series  
 ------------------------  
"2018-08-01"  
"2018-08-02"  
"2018-08-03"  
"2018-08-04"  
"2018-08-05"  
"2018-08-09"  
"2018-08-10"  

推荐阅读