如题。

解决方案 »

  1.   

    可是setDate有这样的问题,就是它本身是不包含时间信息的,即时间永远是00:00:00.可Oracle的DATE字段时可以存储时间的啊,可以to_date('...','yyyymmdd hh24:mi:ss')的。
      

  2.   

    java.sql.Timestamp继承java.util.Date类并加以扩充,如果在sql里使用
    setDate()设置的时间只包括年月日,要完整时间需要调用setTimeStamp()
      

  3.   

    如果想要得到时间和日期信息,用setTimeStamp()。因为Timestamp封装有关签署时间戳的信息,它包括了时间戳的日期和时间
      

  4.   

    谢谢大家,但是又有一个问题,就是setTimestamp的话, 那这个DATE类型的字段上的索引又用不上了。。
    JDBC的setTimestamp是不是和to_timestamp的效果一样的?
    大家可以看下,DATE字段如果用to_timestamp不会使用索引, 而用to_date是可以利用索引的。
      

  5.   

    Oracle 9i开始有timestamp
    该用Date还是Timestamp看日期精度要求情况而定to_timestamp是SQL的类型强转函数,能不用则尽量别用。
      

  6.   

    如果是ps.setTimestamp的话是不是在Oracle那边,是被识别为一个Timestamp对象呢?也就是to_timestamp的返回对象类型一致?
      

  7.   

    如果你的日期类型是java.sql.Date的话,就setDate()
      

  8.   

    可是java.sql.Date的类型不包含时间信息的。
      

  9.   

    java.sql.Date 转换成Util的再拿时间信息
      

  10.   

    java.util.Date不能传给PreparedStatement的。
      

  11.   

    我考虑下,java.sql.Date无法满足包含时间信息的要求,java.sql.Timestamp在Oracle被识别为timestamp类型,跟DATE类型不符,不能使用索引。所以综合来看,使用to_date函数传入字符串类型的时间串最好。 大家还有其它高见否?
      

  12.   

    其实当初要是把表里的字段设置成Varchar2()的就好了~~
    还有请教一下那个不能使用索引是如何看出来的??
      

  13.   

    Oracle数据库,JDBC访问,字段类型是DATE,PreparedStatement里用setTimestamp还是setDate?  oracle       java
    date         java.sql.date
    timestamp    java.sql.timestamp如果oracle是date,而java中用sql.date的话,会丢失时分秒,所以可以另想办法比如:java中是日期字符串,后台用to_date(datestr,'yyyy-mm-dd hh24:mi:ss')来转换当然oracle中的date类型在获取的时候也会自动去掉时分秒,所以可以用to_char函数来处理带时分秒的,最好的方法当然是前后都用timestamp
      

  14.   

    如果有时分秒,就用setTimestamp 同时你的属性也最好用 Timestamp 类。如果只有年月日,用setDate不过许多人更愿意记录一个long, 呵呵,你能猜出来这个long是啥吗? 
      

  15.   


    呵呵,Date.getTime(),since 1970.1.1 ...