Informatica File дата строки конвертировать в метку времени - PullRequest
1 голос
/ 20 февраля 2020

У меня есть столбец в файле Дата доставки - '02 / 09/2020 15:30:00 PM ' в формате строки. Это может AM ИЛИ PM оба. Мне нужно преобразовать его в TIMESTAMP формат oracle в информационном центре питания.

Я пробовал, как показано ниже - TO_DATE (Delivery_date, 'MM-DD-YYYY HH24: MI: SS ')

Но это не работает для AM PM. Просьба предложить

Ответы [ 3 ]

0 голосов
/ 20 февраля 2020

Вы можете удалить AM или PM, используя reg_replace в преобразовании отображения, а затем добавить TO_DATE, если столбец представлен в формате даты / времени.

REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', '')

Поскольку данные поступают в виде строки и выводятся как время, Ваше выходное выражение, я полагаю, будет в дате / времени

Тогда вы можете добавить to_date к работе.

TO_DATE(REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', ''), 'MM-DD-YYYY HH24:MI:SS')

enter image description here

И если вы хотите, чтобы заставить формат - другой путь

TO_DATE(TO_CHAR(TO_DATE(REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', '')), 'MM-DD-YYYY HH24:MI:SS'))

 #EXPLANATION
 /*REMOVE THE AM/PM: REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', '')*/
 /*CONVERT IT TO DATE: TO_DATE(REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', ''))*/
 /*CHANGE THE FORMAT: TO_CHAR(TO_DATE(REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', '')), 'MM-DD-YYYY HH24:MI:SS')*/
 /*THEN RETURN TO DATE: TO_CHAR(TO_DATE(REG_REPLACE('02/09/2020 15:30:00 PM', '( AM| PM)', '')), 'MM-DD-YYYY HH24:MI:SS')*/
0 голосов
/ 21 февраля 2020

Вы пытались просто охватить полный формат?:

TO_DATE( Delivery_date, 'MM/DD/YYYY HH12:MI:SS AM' )

Это должно работать просто отлично. По вопросам, связанным с форматированием, см. Документацию .

0 голосов
/ 20 февраля 2020

Если вы хотите тип данных TIMESTAMP, используйте TO_TIMESTAMP. Oracle не допускает модели формата HH24 и AM (или PM), поскольку это будет неоднозначно, если 24-часовой индикатор часов и меридиан не совпадают; вам придется удалить один из них, и поскольку индикатор AM / PM находится в конце строки, его легче всего удалить с помощью SUBSTR:

TO_TIMESTAMP( SUBSTR( delivery_date, 1, 19 ), 'MM/DD/YYYY HH24:MI:SS' )

db <> fiddle

(и если вам просто нужен тип данных DATE, который в Oracle также имеет компонент времени, тогда используйте TO_DATE вместо TO_TIMESTAMP )

...