在插入数据的时候老是要先to_char,比如
String  dateTemp = '2010-10-22',不能直接to_date(dateTemp,'yyyy-mm-dd'),必须 
to_date(to_char(dateTemp),'yyyy-mm-dd'才可以,怎么设置oracle让它直接to_date(dateTemp,'yyyy-mm-dd')也能通过

解决方案 »

  1.   

    这样肯定行。
    to_date('2010-11-02','yyyy-mm-dd')你的dateTemp是什么内容呢?
      

  2.   

    String dateTemp = "2010-10-22"
    StringBuffer sb = new StringBuffer(200);
    sb.append("insert into tableTempa ");
    sb.append("select to_date('").append(dateTemp).append("','yyyy-mm-dd')");
    --上面的日期转换,插入时老报liteal can't convert to String 
    sb.append("其他sql");
    程序大概就这样子
      

  3.   

    那是往数据库插入数据的java代码,不知道数据库怎么设置的,公司有好几个oracle数据库,其他的都可以,就其中一个不行,但偏偏是测试要在上面,所以很纠结啊,之前也出现过这个问题,我加上to_char()后就可以运行了,但这次程序比较大,改起来很耗时间,楼上谢谢你啊。
      

  4.   

    你在程序里看看你的sql语句是什么样子
    你直接用to_date()报什么错误?
      

  5.   

    1、这样拼接SQL语句不能使用绑定变量,效率不高
    2、感觉你这个不是oracle错误,是java报错
      

  6.   

    楼主可以在最后将sb。tostring()打印出来,单独拿到数据库去执行,如果可以那肯定是你的java程序有问题,数据库是可以这样子直接转换的 select to_date('2010-09-09','yyyy-mm-dd') from dual;
      

  7.   

    汗。这个是拼SQL的问题。。
    to_date(dateTemp,'yyyy-mm-dd'),这个地方这样是不行的
    在Java里面调用用下面的格式
    String sql = "insert into ....values(to_date('"+datetemp+"','yyyy-mm-dd'),.....".这个是不能直接给一个变量进去的。