如题,程序中很多地方都是
A.Startdate >= To_Date('2009-05-19')这么写的,连接公司的服务器,系统是没有问题的。现在在本地搭建oracle库后,运行时就报java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配 ,知道是查询时因为“A.Startdate >= To_Date('2009-05-19')”引起的,但是程序中太多这么写的了,不知道有没有改变oracle的时间设置,让系统正常运行,而不用改变程序。
那位大侠遇到并解决了,给小弟指点下,不胜感激涕零!!!

解决方案 »

  1.   


    --改成这样
    A.Startdate >= To_Date('2009-05-19','yyyy-mm-dd')
      

  2.   

    回复二楼,程序中很多都是这么写的,改起来很费事,没有改oracle的方法吗?
      

  3.   


    文字与格式字符串不匹配  
    要么这样 A.Startdate >=date'2009-05-19'或者在java中用替换函数把To_Date('2009-05-19'替换date'2009-05-19'
      

  4.   

    不需要替换这么多,有两种办法可以解决此问题:
    1.
    只要在你获取连接,执行任何SQL语句之前,执行如下SQL即可解决问题:alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';也就是说在getConnection()的函数里头,返回之前,执行这个就行了。应该好改。
    2. 设置环境变量:
    添加环境变量:nls_date_format, 值为:YYYY-MM-DD HH24:MI:SS
      

  5.   

    怎么可能不行。
    你设定环境变量以后,需要让环境变量生效。关闭你的,重新启动才可以。或者重启机器。
    第1个方法则更没有问题。取得connection的第一步就是执行这个语句。是会话级的更改。
      

  6.   

    我是按照你说的方法弄了,程序中把sql截取出来,在pl/sql下执行没有问题,但是程序就是报错:
    java.sql.SQLDataException: ORA-01861: 文字与格式字符串不匹配  String statement = " select max(exchDate),baseCurrency,exchCurrency from prpdexch where exchDate <= '"+currDate+"' group by basecurrency,exchcurrency ";resultSet = dbManager.executeQuery(statement); 此举执行就报错;
    是不是跟服务器有关,我用的是weblogic10.
      

  7.   


    '"+currDate+"'之前加上to_date()
    (按照你提问时的约定)