Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция SET TIME ZONE


Вводная

Инструкция SET TIME ZONE изменяет часовой пояс для текущего сеанса, если нужно, чтобы он отличался от заданного по умолчанию.


Синтаксис SQL 2003

SET TIME ZONE {LOCAL | INTERVAL {+ | -} ’00:00′ [HOUR TO MINUTE]}.


Ключевые слова

LOCAL

Часовой пояс текущего сеанса устанавливается равным часовому поясу локального сервера.

INTERVAL

Устанавливается величина прироста (знак +) или уменьшения (знак -) относительно времени, заданного по умолчанию.

INTERVAL

Указывается сдвиг часового пояса относительно Всеобщего скоординированного времени (UTC) в часах и минутах.

HOUR ТО MINUTE

Указывается тип данных для значения TIME ZONE.


Общие правила

Эта достаточно простая команда устанавливает часовой пояс текущего пользовательского сеанса равным часовому поясу сервера (LOCAL) или определяет его относительно Всеобщего скоординированного времени (Coordinated Universal Time, UTC) (которое ранее называлось Гринвичским временем — GMT). Таким образом, значение параметра INTERVAL, равное 2, означает, что часовой пояс устанавливается на два часа после UTC, а значение, равное -6, означает, что часовой пояс устанавливается на 6 часов до UTC (соответствует часовому поясу центральной части США).


Советы и хитрости программирования

Как и большинство других команд SET, инструкцию SET TIME ZONE можно выполнять только вне явной транзакции. Иными словами, не нужно заключать команду в инструкции START или BEGIN TRAN и COMMIT TRAN.


DB2

Не поддерживается.


MySQL

Не поддерживается.


Oracle

В Oracle9i и выше вы можете использовать для изменения часового пояса следующий вариант команды ALTER SESSION.

ALTER SESSION SET TIME_Z0NE={‘[+ | -] hh;mm’ | LOCAL | DBTIMEZONE | ‘регион’}.

Чтобы вернуться к исходному, заданному по умолчанию часовому поясу своего сеанса, используйте ключевое слово LOCAL. Чтобы сделать ваш часовой пояс часовым поясом базы данных, используйте ключевое слово DBT1MEZONE. Параметр ‘регион’ используется для указания регионального часового пояса, например EST или PST1. Чтобы указать сдвиг часового пояса в часах и минутах относительно Всеобщего скоординированного времени, используйте конструкцию типа ‘-5:00 Значение ‘-5:00’ означает, что ваше время на 5 часов ранее Всеобщего скоординированного времени (например, 5:00 у вас — 10:00 — UTC).

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

SELECT
tzname
FROM v$timezone_names;

Обе приведенные ниже команды устанавливают часовой пояс в Восточное стандартное время. Первая команда добивается этого путем указания сдвига от Всеобщего скоординированного времени, а вторая — путем указания региона.

ALTER SESSION SET TIME_Z0NE=’-5:00′;
ALTER SESSION SET TIKE_Z0NE=’EST’;

Поддержка часовых поясов в Oracle достаточно сложна. В книге Steven Feuerstein «Oracle PL/SQL Programming)) (O`Reilly), в главе о типах данных дата-время, приводится хорошее объяснение.


PostgreSQL

Платформа PostgreSQL позволяет установить часовой пояс сеанса равным заданному по умолчанию часовому поясу сервера, для чего используются взаимозаменяемые команды LOCAL и DEFAULT.

SET TIME ZONE {‘часовой пояс’ | LOCAL | DEFAULT};

Существует несколько отличий от стандарта ANSI.

‘часовой_пояс’

Указывается название часового пояса. Список допустимых значений зависит от операционной системы. Например, для Linux серверов база данных часовых поясов содержится в файле /usr/share/zoneinfo.

LOCAL | DEFAULT

Время текущего сеанса устанавливается в соответствии с принятым по умолчанию часовым поясом локального сервера.

Например, ‘PST8PDT’ — это часовой пояс Калифорнии в системах Linux, a ‘Europe/ Rome’ — часовой пояс Италии в системах Linux и других системах. Если вы введете недопустимое значение часового пояса, будет установлен часовой пояс UTC.

Если часовой пояс сдвигается в положительную сторону от UTC, знак «+» является обязательным. Если вы введете недопустимое значение часового пояса, будет установлен часовой пояс UTC.

В следующем примере в качестве часового пояса PostgreSQL устанавливается Тихоокеанское стандартное время.

SET TIME ZONE ‘PST8PDT’;

А теперь время текущего сеанса возвращается к часовому поясу, установленному для сервера по умолчанию.

SET TIME ZONE LOCAL;


SQL Server

He поддерживается.

Источник