Обработка преобразования даты ГГГГ-ММ-ДД ЧЧ: ММ: СС.ССС - PullRequest
1 голос
/ 03 апреля 2019

Мой источник - файл и загрузка в таблицу SQL Server.Я работаю над сценарием, в котором мне нужно преобразовать строку «2019-04-02 T 21: 24: 00.065» в формат даты и времени informatica.

Я попробовал приведенное ниже выражение, но иногда его сбой из-за того, что мы несколько раз не получаем миллисекунды из нашего исходного файла.

IIF (NOT ISNULL (DATEFIELD), TO_DATE (SUBSTR (DATEFIELD,0, 10) || '' || SUBSTR (DATEFIELD, 12, 12), 'YYYY-MM-DD HH24.MI.SS.US'), NULL)

Я ищу постоянныйисправлена ​​обработка всех типов форматов даты и времени независимо от того, что мы получаем в файле.

Ответы [ 3 ]

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

Ну ... извините, но нет волшебного компонента, который распознавал бы все возможные форматы даты и времени (включая, например, словесный на суахили). Вам нужно будет определить формат для себя. Вы можете использовать функцию DECODE, например, например ::1001*

DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)
0 голосов
/ 04 апреля 2019

Спасибо за ваш вклад, ребята.Поскольку мы не уверены, какой формат даты мы получаем, мы решили сделать это с помощью простого исправления.Я изменил целевое поле на varchar и просто заменил значение T на значение '', так как это поэтапное отображение.

Еще раз спасибо за ваше время и данные.

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

Если вы абсолютно уверены, что пропущены только секунды / миллисекунды, вы можете проверить длину, если меньше 12, использовать RPAD для второй части вашего SUBSTR с отсутствующим форматом или использовать декодирование, как предложено @maciejg и напишите код для всех возможных форматов даты.

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