PostgreSQL | Как получить текущий год? — efim360.ru

PostgreSQL | Как получить текущий год?

Иногда бывает полезным получать не всё временное значение, а только какую-то его часть. Например, мы хотим получить текущий год, без даты, без времени, без миллисекунд и так далее. Как это сделать?

 

-- Стандарт PostgreSQL

SELECT extract(YEAR FROM NOW());

-- Стандарт SQL

SELECT CURRENT_TIMESTAMP;

 

Данное выражение вернёт нам числовое значение с типом numeric, которое будет соответствовать текущему году, который установлен в операционной системе, в которой работает PostgreSQL.

Получили текущий год 2022 с типом numeric в PostgreSQL
Получили текущий год 2022 с типом numeric в PostgreSQL

В идеале вы получите то что хотите. Но ввиду особенностей разных операционных систем будьте готовы получить что-то другое.

 

Как работает выражение получения текущего года в PostgreSQL?

Мы отталкиваемся от встроенной функции NOW(), которая живёт в самом PostgreSQL. Вызов этой функции возвращает нам текущую временную метку с временной зоной - то есть максимальное возможное значение даты в PostgreSQL.

 

SELECT NOW();

 

После этого мы используем полученную временную метку в другой функции, которая называется extract(). Но кроме самой метки, мы ещё должны указать ПОЛЕ, которое нужно извлечь из этой метки. В нашем случае для "ГОДА" подходит метка "YEAR".

Получили текущую временную метку с зоной через NOW() в PostgreSQL
Получили текущую временную метку с зоной через NOW() в PostgreSQL

 

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

Официальный сайт 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-datetime