Текущая дата на сервере

Типы данных

PostgreSQL поддерживает все типы данных, предусмотренные стандартом SQL для даты и времени. Даты обрабатываются в соответствии с григорианским календарем.

В таблице ниже перечислены поддерживаемые типы даты/времени

Имя Описание Наименьшее значение Наибольшее значение Точность
timestamp [ (p) ] [ without time zone ] дата и время без часового пояса 4713 до н. э. 294276 н. э. 1 микросекунда
timestamp [ (p) ] with time zone дата и время с часовым поясом 4713 до н. э. 294276 н. э. 1 микросекунда
date дата (без времени суток) 4713 до н. э. 5874897 н. э. 1 день
time [ (p) ] [ without time zone ] время суток (без даты) 00:00:00 24:00:00 1 микросекунда
time [ (p) ] with time zone время суток (без даты), с часовым поясом 00:00:00+1559 24:00:00-1559 1 микросекунда
interval [ поля ] [ (p) ] временной интервал -178000000 лет 178000000 лет 1 микросекунда

В таблице используются следующие обозначения

  • [...] - в квадратных скобках указываются необязательные поля.
  • (p) - точность хранения данных, количество разрядов в дробной части секунды.

Время с указанием часового пояса time with time zone стоит использовать с осторожностью. В этом типе не хранится дата, а смещение часового пояса может изменяться при переходе на летнее/зимнее время.

При работе с датами есть много нюансов, особенно с часовыми поясами. Но обо всем по порядку.

Получение текущей даты

Текущую дату на сервере можно получить с помощью функции CURRENT_DATE.

SELECT CURRENT_DATE
# current_date
1 2022-12-06

Функция CURRENT_DATE возвращает текущую дату с типом данных date.

Получение даты со временем

Для получения текущей даты со временем есть две функции:

  • CURRENT_TIMESTAMP - возвращает текущую дату со временем с указанием часового пояса (тип данных timestamp with time zone).
  • LOCALTIMESTAMP - возвращает текущую дату со временем без указания часового пояса (тип данных timestamp without time zone).
SELECT CURRENT_TIMESTAMP,
       LOCALTIMESTAMP
# current_timestamp localtimestamp
1 2022-12-06 12:13:39.414652+07 2022-12-06 12:13:39.414652

Получение времени

Для получения времени есть также две функции:

  • CURRENT_TIME - возвращает текущее время с указанием часового пояса (тип данных time with time zone)
  • LOCALTIME - возвращает текущее время без указания часового пояса (тип данных time with time zone)
SELECT CURRENT_TIME,
       LOCALTIME
# current_time localtime
1 12:18:52.072083+07 12:18:52.072083

Обрати внимание, что текущая дата и время берутся с сервера, на котором запущена СУБД.

8.13 TO_CHAR - форматирование числа

9.2 Точность хранения времени