Как сгенерировать даты по диапазону в 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;
В результате получим таблицу вариантов дат. Так как у нас интервал положительный, то и даты прибавляются в большую сторону.
В обратную сторону нужно менять интервал
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-оболочки pgAdmin — https://www.pgadmin.org
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Команды SQL — https://postgrespro.ru/docs/postgresql/15/sql-commands
Функции, возвращающие множества — https://postgrespro.ru/docs/postgresql/15/functions-srf