Преобразование локального времени ко времени заданного часового пояса
Функция
Преобразование локального времени ко времени заданного часового пояса.
Спецификация
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
Синтаксические правила
-
< Дата-время выражение >
– значение, воспринимаемое как дата (время) локального часового пояса. -
Если аргумент
< часовой пояс >
равен NULL или не задан, то по умолчанию преобразование выполняется к нулевому часовому поясу (по Гринвичу).select sysdate, to_gmtime(sysdate, null); |16.08.2010:11:05:20.81|16.08.2010:07:05:20.81|
Примечание
В данном случае результат может оказаться неверным, т.к. для формирования времени функция использует текущее значение флага летнего времени в ОС, а не то, которое должно соответствовать дате, указанной в качестве аргумента
< дата-время выражение >
. -
Параметр
< временная_зона1 >
задает номер часового пояса для зимнего времени.Получить чему соответствует данное локальное время в 3 часовой зоне (Москва): select to_GMTIME(to_date('12.45.00', 'hh.mi.ss'), 'gmt+3'); |00.00.0000:09:45:00.00|
-
Параметр
< временная_зона2 >
задает номер часового пояса для летнего времени.Обычно отличается от
< временной_зоны1 >
на 1 час, т.е.< временная_зона2 >
=< временная_зона1 >
+1. -
Для получения летнего времени необходимо указать дату и при необходимости время перехода на летнее и на зимнее время в этом часовом поясе.
Например, узнать, чему соответствует данное локальное время в 3 часовом поясе (дата перехода на летнее время 30 марта в 02.00 часа ночи, на зимнее время – 30 октября в 02.00 часа ночи). select to_gmtime(to_date('14.30.00','hh.mi.ss'),' GMT+3:00:00 GMT+04:00:00, M3.5.0/2:00:00, M10.5.0/02:00:00 '); |00.00.0000:11:30:00.00|
-
Конструкция
DST[< смещение >
] задает смещение относительно< временной_зоны1 >
.select to_gmtime(to_date('14.30.00','hh.mi.ss'),'GMT+3DST+1,M3.5.0/2,M10.5.0/2'); эквивалентно select to_gmcaltime(to_date('14.30.00','hh.mi.ss'),' GMT+3:00:00 GMT+04:00:00, M3.5.0/2:00:00, M10.5.0/02:00:00 '); |00.00.0000:17:30:00.00|
-
Если задана только
< временная_зона1 >
, а< временная_зона2 >
не задана, то подразумевается, что переход на летнее/зимнее время отсутствует. -
< Смещение >
задает нужную часовую зону в прямом или обратном (в зависимости от знака) направлении от локального часового пояса. Допустимое значение в интервале от '-14:00:00' до '+14:00:00'.select to_char(sysdate,'hh:mm:ss'), to_char(to_gmtime(sysdate, 'gmt+10'),'hh:mm:ss'); |11:08:34|01:08:34|
-
Синтаксис аргумента
< часовой пояс >
аналогичен этому же аргументу в функцииTO_LOCALTIME
. -
Если задана только
< временная_зона1 >
, а< временная_зона2 >
не задана, то подразумевается, что переход на летнее/зимнее время отсутствует. -
В случае если задана
< временная_зона2 >
, но не задано< смещение >
для 'GMT' или< смещение >
для 'DST', подразумевается, что оба эти смещения отличаются от< смещения >
из< временной_зоны1 >
на 1 час.select to_char(sysdate,'hh:mm:ss'), to_char(to_gmtime(sysdate, 'GMT+3'),'hh:mm:ss'), to_char(to_gmtime(sysdate, 'GMT+3 GMT,M3.5.0,M10.5.0'),'hh:mm:ss'); |11:08:44|08:08:44|07:08:44|
-
< Дата_перехода_на_летнее время >
,< дата_перехода_на_зимнее время >
– даты перехода на летнее и на зимнее время соответственно. -
< Время >
– время перехода на летнее или на зимнее время. Если оно не задано, по умолчанию используется значение '02:00:00'. -
Знак '+' у
< смещения >
означает, что часовой пояс лежит к востоку от Гринвича, '-' – к западу от Гринвича.Примечание
Часовой пояс Москвы '+3'/'+4' для зимнего/летнего времени соответственно.
-
В параметре
< неделя >
число 5 означает последний день недели в месяце, даже если в месяце всего 4 таких дня недели. -
В параметре
< день >
отсчет дней начинается с воскресенья, т.е. 0 – воскресенье. -
Сумма смещений из
< временной_зоны1 >
и конструкцииDST < смещение >
должна находиться в интервале от '-14:00:00' до '+14:00:00'. -
Аргументы могут быть заданы
< SQL-параметром >
, который должен содержать спецификацию типа данных параметра.select to_gmtime(? (date),? (char(30))); 30.12.2015:23:00:00 GMT+3DST+1,M3.5.0/2,M10.5.0/2 |30.12.2015:20:00:00.00|
-
Поддерживаются условные наименования временных зон (см. таблицу 6).
Общие правила
-
Интервал времени между GMT и локальным временем вычисляется заново через каждые 30 секунд.
Возвращаемое значение
Значение типа DATE, преобразованное из локальной даты в дату (время) заданного часового пояса в летний или зимний период времени.
Примеры
-
Самолет вылетел из Иркутска 28.12.2007 в 15.45.00 по местному времени (8 часовой пояс) в Воронеж (3 часовой пояс). Длительность полета 3 час 47 мин. Узнать местное время прибытия самолета. select 'Время отправления: '+ to_char(to_localtime(to_date('28.12.2007.15.45', 'dd.mm.yyyy.hh.mi'), 'gmt+0'), 'dd.mm.yyyy.hh.mi') union select 'Время прибытия: '+ to_char(to_gmtime(to_localtime(to_date('28.12.2007.15.45', 'dd.mm.yyyy.hh.mi'), 'gmt+0') +to_date('03','hh') + to_date('47','mi'),'gmt+5'),'dd.mm.yyyy.hh.mi'); |Время отправления: 28.12.2007.15.45| |Время прибытия: 28.12.2007.14.32|
-
Варианты задания часового пояса Москвы: 'GMT+03:00:00GMT+04:00:00,M3.5.0/02:00:00,M10.5.0/02:00:00' 'GMT+3DST+1,M3.5.0/2,M10.5.0/2' 'GMT+3DST,M3.5.0,M10.5.0'