TO_TIMESTAMP_TZ игнорирует часовой пояс - PullRequest
0 голосов
/ 14 апреля 2020

Запуск Oracle PL / SQL версия 12.1 на Linux Red Hat 7.7

Я пытаюсь преобразовать следующие поля varchar в метку времени с часовым поясом. Временная метка отформатирована как MMDDYYHH24MMSS. Похоже, что часовой пояс отформатирован с +/-, затем 3-4 цифрами, возможно, в диапазоне от -1200 до +1200, без добавления нуля. Пример:

ts | tz

041320174533 | -700

Мне нужна следующая отметка времени с часовым поясом:

ts_tz

2020-04-13 17:45:33 -07: 00

My попытка (представьте, что жестко запрограммированные значения '041320174533' и '-700' были заменены на ts и tz соответственно):

-- Input to to_timestamp_tz '041320174533 -700'
select
     to_timestamp('041320174533', 'MMDDYYHH24MISS') as dt
    ,to_timestamp_tz('041320174533' || ' ' || substr('-700', 1, 1) || '0' || substr('-700', 2, 3), 
        'MMDDYYHH24MISS TZHTZM') as dt_tz
from dual;

Но результат не имеет часового пояса и не обновляет метку времени. to_timestamp и to_timestamp_tz имеют одинаковый результат:

dt | dt_tz

2020-04-13 17:45:33 | 2020-04-13 17: 45: 33

Как их объединить и получить ожидаемый результат с прикрепленной меткой времени?

...