Как получить последние 30 дат (более старых) относительно текущей даты в PostgreSQL?
Для этого нам нужно воспользоваться встроенной функцией generate_series()
, которая может принимать 3 параметра:
- Начальную дату
- Конечную дату
- Интервал (временной шаг)
Пример SQL-запроса:
SELECT generate_series( current_timestamp - INTERVAL '30D', current_timestamp, '1D' )::date;
Данная функция возвращает нам табличный вид с датами. Главное что в этой таблице даты отсортированы по возрастанию.
Первая запись таблицы будет самой старой. Последняя запись таблицы будет являться «текущей датой» так как мы используем «current_timestamp«.
Каждую строчку таблицы мы приводим к типу «date«, чтобы отбросить информацию о времени.
Шагом у нас является интервал «один день», который передаётся обязательным третьим параметром в виде ‘1D’.
Информационные ссылки
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org
Команды SQL — https://postgrespro.ru/docs/postgresql/16/sql-commands
Функции, возвращающие множества — https://postgrespro.ru/docs/postgresql/16/functions-srf