Oracle SQL 加载程序 - 在同一列中加载不一致的日期格式



我的客户提供了两个不同年份的 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:不是有效的月份"

考虑:

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
)

逻辑是 tom 简单地检查字符串的前 4 个字符;如果它是'2020',那么我们使用第一个 sring 格式,否则我们使用另一个。

最新更新