我用的IBATIS2.3插入一个表的DATE型字段,插入的new Date(),记得前不久都可以正常显示年月日时分秒的,不知道后来怎么的,插入的都是年月日,没有时分秒了,用to_char函数去看mi hh ss结果都是00。其中2010-01-12 08:43:31是我用SQL命令插入的SQL> select to_char(createdate,'yyyy-mm-dd hh24:mi:ss') from subscriber;TO_CHAR(CREATEDATE,
-------------------
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-12 08:43:31
2010-01-11 00:00:00
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:0011 rows selected.其中代码:
Subscriber subs = new Subscriber();
subs.setSubsid(new Long(1000000011));
subs.setCreatedate(new Date());
subs.setRegion(new Short((short) 1));
subs.setActive(new Short((short) 0));
subs.setStatus("primary");
reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMap.startTransaction();
sqlMap.insert("SCOTT_SUBSCRIBER.ibatorSubscriber_insert_seq", subs);
sqlMap.commitTransaction();
谢谢各位大侠解惑!

解决方案 »

  1.   

    把日期字段改为 Timestamp 类型试试。
      

  2.   

    subs.setCreatedate(new Date());  用的是java.util.date 
    在保存到数据库的时候 转化为java.sql.Timestamp 丢掉了时间精度
      

  3.   

    时分秒:new java.util.Date(),日期:java.sql.Date
      

  4.   

    你的数据库保存的是什么类型? 
    如果是Date类型 需要  to_date(createdate,'yyyy-mm-dd hh24:mi:ss') , 你把插入时的数据打印一下看是不是插入的时候把时间丢失了。
      

  5.   

    引言他人的:
    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。
    java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用 ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
    如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的 java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).
    显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,
    我们需要利用java.sql.Timestamp. 
      

  6.   

    oracle
    如果是录的时间直接写sysdate就行了subs.setCreatedate(new Date()); 
    select sysdate from dual
    import java.text.SimpleDateFormat;
    import java.util.Date;public class Demo {
    public static void main(String[] args) {
    Date now = new Date();
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    System.out.println(f.format(now)); }
    }2010-01-12 09:52:12
      

  7.   

    我是用的java.util.date,Oracle用的是DATE。
    现在我已经把数据类型改为了Timestamp还是不行。然后又把程序的DATE改为了Timestamp,还是时分秒都为0.Timestamp是精确到秒后6位。
      

  8.   

    都试过了,还是不行哦,好像是ORACLE 的问题 ,它好像设置把时分秒设置了默认值,都不能改,但是我用SQL命令插入sysdate就可以。郁闷哦,谢谢 各位在支支招
      

  9.   

    既然sysdate可以,那数据库本身应该没问题,看一下你的subs.setCreatedate方法里的值类型是什么样的
      

  10.   

    现在都是放的是java.util.Date  oracle 里面是 DATE