select to_date ( substr ( cvalidate , 6 , 10 ), 'MM-DD' ) from lcpol where polno = '210010000123931' ; ERROR at line 1 : ORA - 01839 : date not valid for month specified 一看错误信息是 ORA-01839: date not valid for month specified 。首先想到可能是数据有问题导致在使用 TO_DATE 报错。不管怎样先去求证下是不是真的存在该错误。首先连接上说执行报错的库,执行 SQL ,果然如开发人员所说报错。接着连接上说执行正常的库,执行 SQL ,果然 Oracle 很友好的返回了结果。既然错误事实存在,那就要去找出导致错误的原因了。 按照对错误的第一反应,先去比对两边的数据是否一样。比对结果有点令人失望,两边的数据完全一模一样。难道是 SQL 本身 存在问题?仔细分析下 SQL ,应该没错啊,虽然使用 'MM-DD' 格式化的写法不怎么好,但也应该不至于导致执行错误啊,况且在另外的库上是执行正确的。那问题到底处在哪呢?难道是两库的日期参数设置不一样?查看了一下,两个数据库的 NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET NLS_DATE_LANGUAGE NLS_DATE_FORMAT 设置也是一样的。好吧,看来问题应该不在数据上。 中国南方Oracle用户组(SOUG)联合创始人,Oracle ACE,曾服务于国外某大型银行,曾担任国内某中型保险公司的技术经理,现为易景科技合伙人、首席架构师、CTO。主要研究方向数据库内核。

注册时间: 2014-02-19

513506

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员