Получение дополнительных дней от generrate_series - PullRequest
1 голос
/ 27 сентября 2019

У меня есть следующая команда

select generate_series('2019-09-01'::timestamp, least(current_date, '2019-09-18'), interval '1 week')

, которая возвращает меня обратно

2019-09-01 00:00:00
2019-09-08 00:00:00
2019-09-15 00:00:00

Возможно ли получить последний результат, даже если идентификатор не соответствует заданному интервалу?Так что я хотел бы вернуться

2019-09-01 00:00:00
2019-09-08 00:00:00
2019-09-15 00:00:00
2019-09-18 00:00:00

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Применить greatest() в подзапросе, а затем least() в основном запросе:

select least(date, '2019-09-18') as "Date Interval"
  from
  (
   select 
         generate_series('2019-09-01'::timestamp, 
                         greatest(current_date, '2019-09-18'), 
                         interval '1 week') as date ) q

Демо

1 голос
/ 27 сентября 2019

Что ж, вы можете объединиться с этой окончательной датой:

select generate_series('2019-09-01'::timestamp, least(current_date, '2019-09-18'), interval '1 week')
union
select '2019-09-18'::date;

Если в серию сгенерированных вами данных также включена конечная дата, объединение удалит один из двух дубликатов.В противном случае профсоюз включит эту окончательную дату.

...