SQLLDR формат однозначный месяц и дата - PullRequest
0 голосов
/ 04 мая 2018

в моем файле sqlldr ctl у меня есть запись ниже

REPORT_MONTH "decode(trim(:REPORT_MONTH),null,null,to_date(trim(:REPORT_MONTH), 'MMYYYY'))"

но это не сработает, если данные равны 22018 для 022018. Я знаю, что в java он поддерживает 'MYYYY', но после поиска я обнаружил, что SQL не имеет такого формата. Тогда как мне разобрать дату по одной цифре?

А также у меня есть другое поле, в котором разрешены однозначные месяц и дата, что-то вроде '9/9/2018'

DISP_DATE "decode(trim(:DISP_DATE),null,null,to_date(trim(:DISP_DATE), 'MM/DD/YYYY'))"

1 Ответ

0 голосов
/ 04 мая 2018

В первом случае вам нужно дополнить дату шестью символами, заполнив их нулями слева. Во втором случае он будет работать нормально, используя строку форматирования 'MM/DD/YYYY'. В следующем примере показано, как этого добиться:

SELECT TO_DATE(LPAD('22018', 6, '0'), 'MMYYYY') AS SIX_DIGIT_DATE,
       TO_DATE('9/9/2018', 'MM/DD/YYYY') AS EIGHT_DIGIT_DATE
  FROM DUAL;

Удачи.

...