ORA-01857: недопустимый часовой пояс - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь преобразовать часовой пояс UTC в часовой пояс GMT.

Я запустил этот запрос ниже и получил ошибку ORA.

select NEW_TIME(SYSDATE, 'UTC', 'GMT') from dual;

И ошибка

Error starting at line : 1 in command -
select NEW_TIME(SYSDATE, 'UTC', 'GMT') from dual
Error report -
ORA-01857: not a valid time zone

Я погуглил и обнаружил, что функция NEW_TIME не принимает часовой пояс UTC.

Итак, можете ли вы предложить мне альтернативное решение / любой способ конвертировать из UTC в GMT?

Ответы [ 2 ]

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

UTC также известен как GMT, последний, который NEW_TIME уже принимает.Итак, то, что вы пытаетесь эквивалентно:

SELECT NEW_TIME(SYSDATE, 'GMT', 'GMT')
FROM dual;

Вызов NEW_TIME, конечно, не имеет никакого смысла.Проверьте здесь для получения списка принятых кодов часовых поясов.

0 голосов
/ 10 апреля 2019

Используйте FROM_TZ для преобразования временной метки без часового пояса в временную метку с часовым поясом (т. Е. UTC), а затем используйте AT TIME ZONE 'GMT' для преобразования ее из первого часового пояса в часовой пояс GMT. Вам нужно будет использовать CAST в разных местах, так как FROM_TZ ожидает TIMESTAMP, а не DATE, а затем вам нужно привести обратно к DATE в конце (при условии, что вы не хотите TIMESTAMP значение):

SELECT CAST(
         FROM_TZ(
           CAST( SYSDATE AS TIMESTAMP ),
           'UTC'
         )
         AT TIME ZONE 'GMT'
         AS DATE
       ) As gmt_time
FROM DUAL

выход

| GMT_TIME            |
| :------------------ |
| 2019-04-10T14:05:37 |

дБ <> скрипка здесь

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