在一个ODI集合接口使用TO_DATE功能时显示“ORA-01843:不是一个有效的月份”
应用:
Oracle Data Integrator - 版本: 3.2.03.01 及以后发行的版本
本文档的信息可以应用到任何平台
现象
当启动一个ODI代理来运行集合接口,使用Oracle 10.x JDBC访问oracle表时,下面显示的消息表明oracle的to_date功能有问题
1843 : 22008 : java.sql.SQLException: ORA-01843: not a valid month
java.sql.SQLException: ORA-01843: not a valid month
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4
原因
由于10.x 版本的 Oracle JDBC的驱动程序有问题,在没有格式化字符串前就使用to_date功能时,该驱动程序使用的是不同于默认的值
解决方案
to_date('01.' || to_char(A.MY_DATE,'MM.YYYY HH24:MI:SS'))应该替换成to_date('01.' || to_char(A.MY_DATE,'MM.YYYY HH24:MI:SS'),'DD.MM.YYYY HH24:MI:SS')
--使用一个日期域的映射和 to_date / to_char转化功能
--使用to_date / to_char功能的格式化字符串和描述的域不匹配