SQLLDR 格式单个数字月份和日期

SQLLDR format single digit month and date

在我的 sqlldr ctl 文件中,我有以下条目

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

但是如果数据是 22018 pass for 022018,这会失败。我知道在 java 它支持 'MYYYY' 但我搜索后发现 SQL 没有这种格式。那我如何解析单个数字的日期?

我还有另一个字段,其中应该允许一位数字的月份和日期,例如“9/9/2018”

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

在第一种情况下,您需要将日期填充到六个字符,并在左侧填充零。在第二种情况下,使用格式字符串 '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;

祝你好运。