PostgreSQL | Как получить список дат из интервала и одной даты?

PostgreSQL | Как получить список дат из интервала и одной даты?

Как сгенерировать даты по диапазону в PostgreSQL?

У нас есть дата с типом «timestamp with time zone«:

SELECT '2022-12-12 15:04:06.180197+03';

У нас есть интервал:

SELECT INTERVAL '15D';

Мы хотим сгенерировать все возможные даты по этим двум компонентам, зная интервал и одну дату. Как это сделать?

SELECT generate_series(

   '2022-12-12 15:04:06.180197+03'::date, 
   ('2022-12-12 15:04:06.180197+03'::date + INTERVAL '15D'

)::date, '1D')::date;

В результате получим таблицу вариантов дат. Так как у нас интервал положительный, то и даты прибавляются в большую сторону.

Получили все возможные даты по интервалу и одной дате - PostgreSQL
Получили все возможные даты по интервалу и одной дате — PostgreSQL

 

В обратную сторону нужно менять интервал

SELECT generate_series(('2022-12-12 15:04:06.180197+03'::date + INTERVAL '-15D')::date, '2022-12-12 15:04:06.180197+03'::date, '1D')::date;

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdminhttps://www.pgadmin.org

Официальный сайт СУБД PostgreSQLhttps://www.postgresql.org

Команды SQLhttps://postgrespro.ru/docs/postgresql/15/sql-commands

Функции, возвращающие множества — https://postgrespro.ru/docs/postgresql/15/functions-srf