当前位置:  数据库>oracle

系统日期设置不正确导致的ORA-01839错误

    来源: 互联网  发布时间:2017-06-16

    本文导语: 早上收到开发人员发来的邮件,说在一个测试环境中SQL执行报错,但相同的SQL在另一个测试环境中却执行经常,叫我帮忙分析一下原因。报错的SQL为: SQL> select to_date(substr(cvalidate, 6, 10), 'MM-DD') from lcpol where polno='210010000123931'; sele...

早上收到开发人员发来的邮件,说在一个测试环境中SQL执行报错,但相同的SQL在另一个测试环境中却执行经常,叫我帮忙分析一下原因。报错的SQL为:

SQL> select to_date(substr(cvalidate, 6, 10), 'MM-DD') from lcpol where polno='210010000123931';

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设置也是一样的。好吧,看来问题应该不在数据上。

 

 再回头来看一下,在条件polno='210010000123931'下的cvalidate是个什么值呢?


SQL> select cvalidate from lcpol where polno='210010000123931';  CVALIDATE ---------- 2012-02-29

看来该值确实也比较特殊,4年才会出现一次。但是特殊归特殊,也不应该报错了。想到如果直接用该值会怎样?嗯,那就试试看:


SQL>select to_date(substr('2012-02-29', 6, 10), 'MM-DD') from dual;

ERROR

-----------------------

ERROR at line 1:

ORA-01839: date not valid for month specified

 

SQL> select to_date(substr('2012-02-29', 6, 10), 'MM-DD') from dual;

 

TO_DATE(SU

----------

2012-02-29

测试结果还是一样。正一筹莫展之际,突然注意到虽然使用'MM-DD'来格式化日期,但是结果中仍然还有年的信息!想到当前的NLS_DATE_FORMAT为'YYYY-MM-DD',猜测Oracle会使用当前系统的日期来附加年的信息。难道是那台执行错误的库的系统日期不正确,马上查看一下,果然,系统日期是2013年!


$ date

Fri Mar  1 18:45:13 CST 2013

马上联系系统管理小组帮忙修正系统日期。在系统日期修改正确后,SQL执行正常,至此问题解决。


    
 
 

您可能感兴趣的文章:

  • 用date命令修改系统时间会导致关机?
  • 非正常关机导致系统无法进入Xwindow,高手请指导!!!
  • 我把linux系统默认PATH覆盖了导致好多命令用不了,怎么办?
  • 双系统导致声卡问题??
  • 由于日志而导致系统无法启动的问题,急,在线等。
  • AS3安装Oracle 9.2.0前,打补丁出错,导致系统无法引导.大侠们帮忙
  • 痛哭!!!装了共创桌面后,因为分割了一个分区,导致无法进入系统选择菜单,把共创格式化后,重装原来的windows都无法进入系统选择菜单
  • 急!急!急!由于突然断电,导致系统文件出错,不能够正常引导?!!!!
  • 关于内核定时器的简单模块编程,但是导致系统崩溃,请高手看看。
  • Cygwin1.5.13-1下运行configure出错,并导致系统不稳定
  • 【咨询】Linux操作系统下读未申请的内存或导致异常吗?谢谢!
  • 有关slab的简单应用,导致系统崩溃,请高手指点
  • 只因windows下用分区大师调整了一个分区的容量,导致双系统引导失常,求助!
  • 9260驱动导致系统崩溃
  • 有关slab的简单应用,导致系统崩溃,请高手指点 iis7站长之家
  • 是什么原因,导致系统无规律重启。。
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Unmounting initrd failed 错误表示什么错误?可能是由什么引起的?系统原来一直运行正常,突然发现系统登陆错误,重启提示以上错误。
  • sql2005 create file遇到操作系统错误5拒绝访问 错误1802
  • 在Linux系统上recv返回错误,通过errno得到的错误消息为"Interrupted system call"
  • 我的系统是linux9.0 我进入系统用ls查看文件的时候出现段错误,这是怎么回事?
  • 进入系统时出现错误
  • 修改proc文件系统中同时打开文件个数错误
  • RedHat9.0:程序运行“段错误”,为什么连执行系统命令都出现“段错误”?
  • E514: 写入错误 (文件系统已满?)
  • 我的RED HAT LINUX 的文件系统出了错误,怎样解结?谢谢!
  • Linux系统下安装Oracle X11错误解决办法
  • linux下使用易飞ERP系统出现“报表数据库连接错误!!”是怎么回事
  • 交叉编译系统调用模块错误
  • 请问如何解决因为库的版本与文件系统不兼容引起的段错误?
  • linux高手请帮忙,系统崩溃,段错误!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎样得到系统日期?
  • 怎们取得系统当前日期与星期
  • dos 命令 得到系统日期
  • 在Linux 系统加个按日期回复文件的功能,急需
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • 菜鸟问题--如何获得系统的当前日期??
  • 请问高手们,在UNIX下怎么改变系统日期?
  • 怎样修改系统时间和日期?
  • 请问在rehat7.2字符界面下如何更改系统的日期和时间???
  • 在windows下访问Solaris系统的文件为什么前面多日期?
  • C# 设置系统日期格式的方法
  • 取得系统日期插入表的问题,请指教
  • AIX系统下如何每天定时检查某目录下的文件并删除日期为1周前的文件
  • mysql中取系统当前时间,当前日期方便查询判定的代码
  • 在linux系统下,怎样编写shell脚本把当前目录下的文件(文件日期要求是2011年9月14日01点至2011年9月15日01点之间。。。。
  • 请问如何获得系统日期,并把其转化为 String
  • Java输出系统当前的日期(年月日时分秒毫秒)
  • 请问在SCO下的c编程模式下,通过哪个函数获得系统的日期和时间?
  • 菜鸟想问:如何在我的jsp页面上显示系统的日期和时间???
  • 取系统日期用哪个类好 最好能给原码!!谢谢!!!
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 问一个系统配置的问题:win2k系统能不能于SCO UNIX系统共存?
  • win7/Windows7系统下载地址搜集整理
  • unix下用java.util.Date取系统时间比直接在系统下用date命令查看系统时间早整整一个小时
  • Ubuntu查看系统信息命令介绍
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 我现在想做一个权限管理系统,想让权限系统的利用性更强,我应该怎样设计权限系统呢.
  • 怎样重装win7系统?win7重装系统步骤详细图文介绍
  • 谁知道哪里有用java开发的管理信息系统软件(如:图书馆管理系统,人事部管理系统)的代码?
  • Ubuntu系统安装及升级命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3