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

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-оболочки pgAdminhttps://www.pgadmin.org

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

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

Раздел «Операторы и функции даты/времени» — https://postgrespro.ru/docs/postgresql/15/functions-datetime