Oracle to_date: ORA-01821: формат даты не распознан - PullRequest
0 голосов
/ 16 октября 2018

Как мне преобразовать эту строку в дату или метку времени?

'04 -Nov-2014 10:16:20 AM -0500 '

Я пытался:

select to_date('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZH') FROM dual;

, который выдает ошибку:

ORA-01821: date format not recognized

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Тип данных DATE не поддерживает информацию о часовом поясе, поэтому вы должны использовать тип данных TIMESTAMP WITH TIME ZONE, если хотите использовать его.Также вы должны рассмотреть язык дат, который установлен текущим пользователем NLS-Settings.

Тогда -5000 не соответствует TZH, попробуйте этот:

select 
  TO_TIMESTAMP_TZ('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZHTZM', 'NLS_DATE_LANGUAGE = American') 
FROM dual;
0 голосов
/ 16 октября 2018

Вам необходимо использовать TO_TIMESTAMP_TZ, который может анализировать информацию о часовом поясе:

SELECT
    TO_TIMESTAMP_TZ('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZHTZM')
FROM dual;

Демо

Даты Oracle не сохраняют никакой информации о часовом поясе, поэтому вы должны использовать временную метку.

...