You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Informatica日期转换报错求助:无效日期[19/8/2013]行被跳过

问题排查与解决

错误根源

你的转换逻辑完全搞反,且格式匹配错误:

  1. 源平面文件的日期是字符串类型,格式为DD/MM/YYYY(如19/08/2013、19/8/2013),先执行TO_CHAR(A)毫无意义——如果A被工具识别为日期,TO_CHAR会用默认格式输出,和后续解析需要的DD-MON-YY不匹配;如果A是字符串,TO_CHAR直接处理字符串会引发格式混乱。
  2. 后续用TO_DATE(V1,'DD-MON-YY')解析时,V1的内容是源日期字符串(或错误转换后的字符串),根本不符合DD-MON-YY格式(比如19/08/2013和19-AUG-13完全是两种格式),所以必然报错。

正确转换步骤

情况1:直接插入Oracle日期列

Oracle日期列不存储显示格式,只存储日期数值,显示格式由会话的NLS_DATE_FORMAT控制。你只需把源字符串转成日期类型即可:

-- 将源字符串转为日期类型,匹配源格式DD/MM/YYYY(支持单数字日/月)
O1 = TO_DATE(A, 'DD/MM/YYYY')

这个结果可直接插入Oracle日期列,Oracle会自动处理存储;若查询时需要显示为11-AUG-13格式,只需设置会话格式或用TO_CHAR(O1, 'DD-MON-RR')查询。

情况2:需要生成DD-MON-YY格式的字符串(若目标是字符串列)

如果目标列是字符串类型,需先转日期再转成指定格式的字符串:

-- 先转日期,再转成目标格式字符串
O1 = TO_CHAR(TO_DATE(A, 'DD/MM/YYYY'), 'DD-MON-RR')

用RR代替YY处理年份,可避免2000年问题。

额外注意事项

  • 排查源数据中是否存在无效日期(如32/01/2013这类不存在的日期),这类数据会触发跳过错误。
  • 确认ETL工具将源列A识别为字符串类型,避免自动转换导致的格式混乱。

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:15:57