Создать даты для postgres - PullRequest
       1

Создать даты для postgres

0 голосов
/ 09 апреля 2020

У меня есть таблица

enter image description here

, и у меня есть диапазон от '2019-01-02' до '2019-01-04'

Мне нужно сгенерировать ID и ДАТЫ (сгенерированные) из моей таблицы, которые begin_at и окончание_at (обнуляемый) между заданным диапазоном

результат должен быть например:

enter image description here

ID 4 из таблицы не включен в результат, поскольку он start_at и end_at не находятся в диапазоне '2019-01-02' и ' 2019-01-04 '

Мне нужен запрос, который сделает это в postgres.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Использование generate_series()

select t.id, g.dt::date
from the_table t
  cross join generate_series(t.started_at::date + 1,
                             least(t.ended_at::date, date '2019-01-04'),
                             interval '1 day') as g(dt)
where t.started_at >= date '2019-01-02' 
  and t.started_at < date '2019-01-04';
0 голосов
/ 09 апреля 2020

работал этот вариант:

select t.id, g.dt::date from the_table t 
cross join generate_series(t.started_at::date + 1, 
 least(t.ended_at::date, date '2019-01-04'), interval '1 day') as g(dt) 
where dt >= date '2019-01-02' and dt < date '2019-01-04';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...