Иллюстрированный самоучитель по PostgreSQL

Числовые типы

Форматы представления времени

Время, как и дата, может задаваться разными способами. В табл. 3.20 перечислены самые распространенные форматы значений типов time и time with time zone.

Taблица 3.20. Форматы представления времени.

Пример Описание
01:24 ISO-8601 с точностью до минут
01:24 AM Эквивалент 01:24 (суффикс AM используется только для наглядности и не влияет на значение)
01:24 РМ Эквивалент 13:24 (для использования суффикса РМ час должен быть меньше либо равен 12)
13:24 24-часовой формат, эквивалент 01:24 РМ
01:24:11 ISO-8601, с точностью до секунд
01:24:11.112 ISO-8601, с точностью до микросекунд
012411 ISO-8601, с точностью до секунд, числовое форматирование

В дополнение к этим форматам в PostgreSQL предусмотрена возможность уточнения времени в типах time и time with time zone. Дополнительные форматы перечислены в табл. 3.21.

Таблица 3.21. Допустимые форматы часового пояса.

Пример Описание
01:24:11-7 ISO-8601, GMT + 7 часов
01:24:11-07:00 ISO-8601, GMT + 7 часов 0 минут
01:24:11-0700 ISO-8601, GMT + 7 часов 0 минут
01:24:11 PST ISO-8601, тихоокеанское стандартное время (GMT + 7 часов)

Примечание
В PostgreSQL поддерживаются все сокращенные обозначения часовых поясов, предусмотренные в стандарте ISO
.

Тип time with time zone поддерживается в PostgreSQL в основном для сохранения совместимости с существующими стандартами SQL и другими СУБД. Если вам потребуется работать с часовыми поясами, рекомендуется использовать тип timestamp, описанный в следующем пункте. Это объясняется прежде всего тем, что из-за действия летнего времени осмысленная интерпретация часовых поясов иногда возможна лишь при наличии даты.

Во внутреннем представлении PostgreSQL вся информация о часовых поясах хранится в виде числового смещения от времени по Гринвичу (GMT), также называемого UTC (Universal Coordinated Time). По умолчанию PostgreSQL выводит время в часовом поясе, заданном в файле конфигурации операционной системы. Если вы хотите, чтобы время выводилось в другом часовом поясе, это можно сделать четырьмя способами.

  • Настройка переменной среды TZ на сервере. Переменная используется для определения часового пояса по умолчанию при запуске postmaster. Например, она может задаваться в файле.bash_profile пользователя postgres командой export TZ='zone'.
  • Настройка переменной среды PGTZ на стороне клиента. Переменная среды PGTZ может быть прочитана любым клиентом, написанным с использованием библиотеки libpq. Значение интерпретируется как стандартный часовой пояс клиента.
  • Команда SQL SET TIMEZONE ТО. Команда устанавливает для текущего сеанса заданный часовой пояс (например, SET TIMEZONE TO UTC).
  • Секция SQL AT TIME ZONE. Согласно стандарту SQL92 значение секции задается в виде обозначения часового пояса (например, PST) или интервала (например, Interval (-07:00')). Секция AT TIME ZONE включается в команду SQL после значения времени (например, SELECT my_t1mestamp AT TIME ZONT 'PST').

Примечание
Если переменная часового пояса содержит недопустимое значение, в большинстве систем по умолчанию используется время по Гринвичу (GMT). Кроме того, если при компиляции PostgreSQL был задан ключ USE_AUSTRALIAN_RULES, обозначение EST относится к австралийскому восточному стандартному времени (смещение +10.00 часов по отношению к GMT), а не к восточному стандартному времени США
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.