Oracle SQL загрузчик - для загрузки несовместимых форматов даты в одном столбце - PullRequest
0 голосов
/ 10 февраля 2020

Мой клиент предоставил 2 файла фидов двух разных лет для загрузки в нашу базу данных. Проблема в том, что cloumn (TIME_STAMP) получает данные в двух разных форматах.

Для 2019 года: TIME_STAMP получен в формате MM/DD/YYYY HH24:MI:SS

Для 2020 года: столбец TIME_STAMP получен в формате YYYY/MM/DD HH24:MI:SS

Я написал код в файле .ctl, например

"to_date(:TIME_STAMP, case when regexp_substr(:TIME_STAMP,'\w+',1,2)=regexp_substr(:TIME_STAMP,'\w+',1,2) then 'YYYY/MM/DD HH24:MI:SS' else
'MM/DD/YYYY HH24:MI:SS' end)",

Проблема я загружаю файл 2019 года, но в 2020 году получаю

"ORA-01843: недействительный месяц"

1 Ответ

1 голос
/ 10 февраля 2020

Рассмотрим:

to_date(
    :TIME_STAMP, 
    case 
        when substr(:TIME_STAMP, 1, 4) = '2020' then 'YYYY/MM/DD HH24:MI:SS' 
        else 'MM/DD/YYYY HH24:MI:SS' 
    end
)

Лог c просто проверяет первые 4 символа строки; если это '2020', то мы используем первый формат sring, иначе мы используем другой.

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