Форматирование даты Oracle 9999-06-15T00: 00: 00.000 + 0000 в 12c
У меня есть дата из веб-сервиса в формате 9999-06-15T00:00:00.000+0000. Как сохранить это в столбце даты таблицы в Oracle 12c DB.
я пытался
select to_date('9999-06-15T00:00:00.000+0000', 'YYYY-MM-DDTHH24:MI:SS.fff+0000')
from dual;
но я получаю сообщение об ошибке "ORA-01821: формат даты не распознан"
Любая помощь высоко ценится
1 ответ
Формат литерала соответствует timestamp
тип данных вместо date
тип данных. Итак, используяto_timestamp
преобразование было бы достаточно, если бы он имел формат без конечной части, начинающейся со знака плюс как
SELECT TO_TIMESTAMP('9999-06-15T00:00:00.000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3') AS ts
FROM dual;
письмо с цитатой T
как "T"
и с суффиксом .FF3
вместо того fff
как в маске исходного формата. Имея эту конечную часть, нам нужно преобразованиеWITH TIME ZONE
(TO_TIMESTAMP_TZ
) который имеет TZH
(Time Zone Hour
) а также TZM
(Time Zone Minute
) порции после знака плюс. Итак, используйте
SELECT TO_TIMESTAMP_TZ('9999-06-15T00:00:00.000+0000', 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') AS ts
FROM dual;
в соответствии с вашей моделью данных.