Ввод времени с часовым поясом

Для ввода времени с часовым поясом необходимо в конце строки добавить часовой пояс в виде смещения в часах и минутах от UTC, либо указав название часового пояса.

Смещение от UTC может быть как положительным (+), так и отрицательным (-).

Пример Описание
04:05:06.789-8 ISO 8601, с часовым поясом в виде смещения от UTC
04:05:06-08:00 ISO 8601, с часовым поясом в виде смещения от UTC
04:05-08:00 ISO 8601, с часовым поясом в виде смещения от UTC
040506-08 ISO 8601, с часовым поясом в виде смещения от UTC
040506+0730 ISO 8601, с часовым поясом, задаваемым нецелочисленным смещением от UTC
040506+07:30:00 смещение от UTC, заданное до секунд (не допускается в ISO 8601)
04:05:06 PST часовой пояс задаётся аббревиатурой
2003-04-12 04:05:06 Asia/Barnaul часовой пояс задаётся полным названием

Ввод часового пояса

Пример Описание
PST аббревиатура (Pacific Standard Time, Стандартное тихоокеанское время)
America/New_York полное название часового пояса
PST8PDT указание часового пояса в стиле POSIX
-8:00:00 смещение часового пояса PST от UTC
-8:00 смещение часового пояса PST от UTC (расширенный формат ISO 8601)
-800 смещение часового пояса PST от UTC (стандартный формат ISO 8601)
-8 смещение часового пояса PST от UTC (стандартный формат ISO 8601)

Определение разницы с UTC по полному наименованию часового пояса

Раньше в России переводили время на летнее и зимнее с целью более рационального использования светлого времени суток. Весной переводили стрелки часов на час вперед, осенью - на час назад.

В России с недавних пор переход на летнее и зимнее время отменили. В некоторых странах такую практику применяют до сих пор.

Технически переход на летнее/зимнее время - это изменение сдвига часового пояса относительно UTC.

Если при вводе времени указать дату и полное наименование часового пояса, то дата будет использована для определения сдвига относительно UTC.

Посмотри, какой сдвиг был 1 января и 1 июня 2010 года:

SELECT time with time zone '2010-01-01 12:00:00 Asia/Barnaul' AS "Зима 2010",
       time with time zone '2010-06-01 12:00:00 Asia/Barnaul' AS "Лето 2010"
# Зима 2010 Лето 2010
1 12:00:00+06 12:00:00+07

А какой в эти же даты, но в 2023 году:

SELECT time with time zone '2023-01-01 12:00:00 Asia/Barnaul' AS "Зима 2023",
       time with time zone '2023-06-01 12:00:00 Asia/Barnaul' AS "Лето 2023"
# Зима 2023 Лето 2023
1 12:00:00+07 12:00:00+07

9.7 Ввод времени

9.9 Разность дат