PostgreSQL | Последние 30 дат от текущей

PostgreSQL | Последние 30 дат от текущей

Как получить последние 30 дат (более старых) относительно текущей даты в PostgreSQL?

Для этого нам нужно воспользоваться встроенной функцией generate_series(), которая может принимать 3 параметра:

  1. Начальную дату
  2. Конечную дату
  3. Интервал (временной шаг)

Пример SQL-запроса:

SELECT generate_series(
   current_timestamp - INTERVAL '30D',
   current_timestamp,
   '1D'
)::date;

Данная функция возвращает нам табличный вид с датами. Главное что в этой таблице даты отсортированы по возрастанию.

Первая запись таблицы будет самой старой. Последняя запись таблицы будет являться «текущей датой» так как мы используем «current_timestamp«.

Каждую строчку таблицы мы приводим к типу «date«, чтобы отбросить информацию о времени.

Шагом у нас является интервал «один день», который передаётся обязательным третьим параметром в виде ‘1D’.

 

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

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

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

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

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