Типы данных
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 |
Обрати внимание, что текущая дата и время берутся с сервера, на котором запущена СУБД.