2015-11-24 3 views
1

Учитывая такую ​​строку: '2015-11-23T07: 00: 10.563-04: 00' Я пытаюсь определить дата UTC/время, которое я ожидал бы быть: '2015-11-23 11: 00: 10,5630000'Как получить дату/время UTC из строки даты/времени, которая содержит смещение часового пояса в Oracle

Я попробовал следующее:

SELECT sys_extract_utc(
     to_timestamp_tz('2015-11-23T07:00:10.563-04:00', 
         'yyyy-mm-dd"T"hh24:mi:ss.FF TZH:TZM') 
     ) 
FROM DUAL; 

, но это дает результат:

2015/11/23 03:00:10.563000000 

Даже когда я изменяю часовой пояс на положительный, я получаю тот же результат. Я, должно быть, недопонимаю, поэтому буду благодарен за вашу помощь.

ответ

2

Между дробными секундами и часовым поясом нет места. Поэтому удалите пространство из вашего шаблона, и оно даст желаемый результат.

SQL> SELECT sys_extract_utc(to_timestamp_tz('2015-11-23T07:00:10.563-04:00', 'yyyy-mm-dd"T"hh24:mi:ss.FFTZH:TZM')) 
FROM DUAL; 

SYS_EXTRACT_UTC(TO_TIMESTAMP_TZ('2015-11-23T07:00:10.563-04:00','YYYY-MM-DD 
--------------------------------------------------------------------------- 
23-NOV-15 11.00.10.563000000 AM 
+0

Просто понял это, как вы Написал - тянул мои волосы. Благодарю. – Paolog

0

Fixed это - пространство между cahracter "..... HH24: MI: ss.FF TZH: ПЗМ" вызывает проблемы.

Это теперь работает отлично:

SELECT sys_extract_utc(to_timestamp_tz('2015-11-23T07:00:10.563+04:00', 'yyyy-mm-dd"T"hh24:mi:ss.FFTZH:TZM')) FROM DUAL;