Как преобразовать строку времени в UTC в CST в Oracle - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно преобразовать строку метки времени в формате UTC TZ в формат CST TZ, как показано здесь "2019-01-02T11: 53: 59.269-05: 00"

Так что в основном мне нужен вывод этогозапрос с SYSTIMESTAMP заменен на строку времени в формате UTC TZ.выберите TO_CHAR (SYSTIMESTAMP, 'ГГГГ-ММ-ДД "Т" HH24: MI: SS.FF3TZH: TZM') CREATEDTIME из двойного;

Я пробовал много вещей, но получаю ошибки

выберитеTO_CHAR (to_timestamp ('2019-01-02 11: 53: 59.759', 'YYYY-MM-DD HH24: MI: SS.FF3TZH'), 'YYYY-MM-DD "T" HH24: MI: SS.FF3TZH:TZM ') CREATEDTIME из dual

Ошибка ORA-01821: формат даты не распознан

Не могли бы вы помочь мне написать правильный запрос SQL.

1 Ответ

1 голос
/ 02 апреля 2019

С помощью TSTZ вы можете выбрать другой часовой пояс.
Ниже приведены некоторые примеры для дневного и стандартного времени.

Стандартное время:

SELECT TO_CHAR(TO_TIMESTAMP_TZ('2019-01-02T16:53:59.269 UTC',
                       'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZR') AT TIME ZONE 'AMERICA/CHICAGO',
               'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM')
    AS CENTRAL_TIME
FROM  DUAL;

Результат:

CENTRAL_TIME
2019-01-02T10:53:59.269-06:00


1 row selected.

И пример перехода на летнее время:

SELECT TO_CHAR(TO_TIMESTAMP_TZ('2019-04-02T17:35:52.136 UTC',
                               'YYYY-MM-DD"T"HH24:MI:SS.FF3 TZR') AT TIME ZONE 'AMERICA/CHICAGO',
               'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM')
    AS CENTRAL_TIME
FROM  DUAL;

Результат:

CENTRAL_TIME
2019-04-02T12:35:52.136-05:00


1 row selected.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...