oracle数据库中的表a中有一字段为Date,java语言编写插入sql语句形如:
PreparedStatement pst=insert a(column) values(?);
有一日期格式的字符串,不如String time="2005-07-26 10:10:10",需要插入表中,使用
pst.setString(1,time),提示错误;
换另一种方法,现将time转换为java.sql.Date实例newTime,然后使用
pst.setDate(newTime)
操作是成功了,但是发现表中字段少了时、分、秒,即只有“2005-07-26”,
不知道大家有没有遇到这个问题,遇到的话,不知道怎么解决的?

解决方案 »

  1.   

    可以用ORACLE驱动程序提供的的系统函数to_date()
    最好在前端用javaScript写好的日历组件。这样就能保证字符串的格式是你oracle的日期格式
      

  2.   

    to:edwin_su()
    你的意思是用to_date(time,date format)这个函数吗?
    但是怎么在pst.setxxx(x,x)中用呢?
      

  3.   

    oracal我没试过 但是SQLServer里面把时间写成String然后pst.setString(1,time);没有问题 
    系统提示什么错误?
      

  4.   

    推荐将数据库中的日期格式改为varchar2格式的。你这样试试
    insert a(column) values(to_date(?));
    不知道能不能成功。
      

  5.   

    insert a(date) values(to_date(?,'yyyy-mm-dd hh-MM-ss'));
    pst.setString(1,time)
      

  6.   

    是否你将time转换为java.sql.Date实例newTime的时候就丢失了时分秒.   java.text.DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss");
      java.sql.Date Date1 = (java.sql.Date)formatter.parse(time);
      

  7.   

    pstmt.setDate(1,new java.sql.Date(new java.util.Date().getTime()));
      

  8.   

    to:laughsmile(海边的星空) 
    我的问题确实如你所说,但是我不知你的示例代码中的time是不是一个字符串,我查了jdk文档,里面的参数应该是个字符串。我这里比如是"2005-07-26 10:10:10",执行后提示ava.lang.ClassCastException: java.util.Date
    to: humanity(总是偷窥 Java & XML) 
    你所说的第一种方法和我试的方法是一样的,会丢失掉时、分、秒,第二种方法应该可以,我吃好饭再试试!
      

  9.   

    to: humanity(总是偷窥 Java & XML) 
    没有注意到setTimestamp方法,这是马虎!
    试了,这个方法是可以的,谢谢!
    结贴!
      

  10.   

    oracle就这么搞,好多数据库好象都不需要
    String time="2005-07-26 10:10:10",
    PreparedStatement pst=insert a(column) values(?);
    pst.setString(1,"to_date("+time+",'yyyy-mm-dd  Hh24:Mi:sS')"),
      

  11.   

    to: yabbijan(需要把问题搞这么清楚吗) 
    不好意思,刚结贴了,没有看到你的回帖,所以没有给分,谢谢你的回答。