2017-02-13 2 views
0

Я пытаюсь преобразовать следующую строку в формате даты и времени:Не можете найти хороший формат даты: невозможно синтаксический

Sat Jan 14 13:55:34 CET 2017 

Если мы считаем, что моя дата находится в переменной in_OutPut3, I» м пытается использовать следующий шаблон формата :

TO_DATE(in_OutPut3,'DY MON DD HH:MI:SS Z YYYY') 

Я получаю следующую ошибку :

Системе не удалось проанализировать формат даты: 'DY MON DD HH: MI: SS Z YYYY'.

Вы знаете, что это за формат даты?

+5

Ваша ошибка означает, что формат DY MON ** MM ** HH: MI: SS Z YYYY, но вы утверждаете, что ваш код говорит DY MON ** DD ** HH: MI: SS Z YYYY. Либо один из них - это не буквально код, с которым вы работаете, или вы ошибочно определили местоположение ошибки. (Не говоря уже о том, что формат, определяющий как «MON», так и «MM», был бы очень странным) –

+0

Вы правы, я изменил код, но не ошибку. Моя ошибка исправляет сообщение. –

+0

Вы имеете в виду функцию Oracle для преобразования дат или функции Informatica? – BriteSponge

ответ

0

Это один работал для меня:

to_timestamp('Sat Jan 14 13:55:34 CET 2017','Dy Mon dd hh:mi:ss ZZ yyyy'); 

Marco

+0

Может быть что-то делать в настройках NLS, но выше не работает для меня на 11g. – BriteSponge

1

У вас есть часовой пояс внедренный в строке так попробуйте использовать функцию TO_TIMESTAMP_TZ. TO_DATE не предназначен для работы с часовыми поясами.

Следующие работы на 11 г;

select to_timestamp_tz('Sat Jan 14 13:55:34 CET 2017','DY MON DD HH24:MI:SS TZR YYYY') from dual 
+0

Я получил это как ответ, но удалил его; вопрос, похоже, касается Informatica и его собственной функции «to_date», а не функции «to_date» функции RDBMS. Формат «Z» для часового пояса, по-видимому, работает в Informatica. –

+0

Возможно, вы правы. , , мои знания Informatica почти 10 лет устарели! – BriteSponge

0

Вы можете просто игнорировать часовой пояс при преобразовании в тип даты Informatica. В любом случае Informatica не будет сохранять информацию о часовом поясе после преобразования в тип данных Data. Положите несколько символов, как подчеркивание (_), чтобы соответствовать «CET»

TO_DATE(in_OutPut3, 'DY MON DD HH24:MI:SS ___ YYYY') 

Кроме того, похоже, у вас есть часы в военном формате. В этом случае вы должны использовать HH24.