Преобразование локального времени ко времени заданного часового пояса.
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
<Дата-время выражение>
– значение, воспринимаемое как дата (время) локального часового пояса.
Если аргумент <часовой пояс>
равен 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'