向oracle数据库插入一条数据,包括日期类型,但是得不到时间,只能得到日期!在dao程序里用到的程序为:
pstmt.setDate(new java.sql.Date(new java.util.Date().getTime()));
pstmt.executeUpdate();
在数据库中查询得到的数据为:
2 127.0.0.1 2007-01-04 00:00:00.0
3 127.0.0.1 2007-01-04 00:00:00.0
4 127.0.0.1 2007-01-04 00:00:00.0
5 127.0.0.1 2007-01-04 00:00:00.0
问题:为什么时间出现为:00:00:00:呢?是不是还有别的好的方法向数据库中插入系统的时间与日期

解决方案 »

  1.   

    需要to_char(java.util.Date().getTime(),'YYYY-MM-DD HH24:MI:SS')比如:
    String sqlStr = "insert into " + tableName
    + " (name,age,height,add_date) values(?,?,?,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))";

    pstmt = con.prepareStatement(sqlStr);
    pstmt.setString(1, client.getName());
    pstmt.setInt(2, client.getAge());
    pstmt.setInt(3, client.getHeight());
    //pstst.setString(4,sysdate);

    pstmt.executeUpdate();
      

  2.   

    多谢tgm78;
      从你的程序中是把它转换为字符串,再存入到数据库中,那在建表时是把它建为varchar2类型的吗?用你的方法我在jbuilder中编绎出错,
    我写的语句为:
     pstmt.setDate(2,to_char(new java.util.Date().getTime(),'YYYY-MM-DD HH24:MI:SS'));
    错误如下:
    "Dao.java": unclosed character literal at line 146, column 67
    "Dao.java": unclosed character literal at line 146, column 89
    请帮忙看一下呀,多谢
      

  3.   

    我也试过把字段的属性改为varchar2类型, 这语句
      pstmt.setString(2,to_char(new java.util.Date().getTime(),"YYYY-MM-DD HH24:MI:SS"));
    jbuilder中说"
    Dao.java": cannot find symbol; symbol  : method to_char(long,java.lang.String), location: class dao.Dao at line 146, column 30
    到底是怎么回事呀!多谢!
      

  4.   

    1. 先to_char,然后再to_date
      

  5.   

    还有这样的需求觉得比较怪, 插入系统时间可以使用 Sysdate的呀.这样的话,需要Java所在的机器的时间和Oracle所在机器的时间一致.
      

  6.   

    建议使用sysdate,不要用getdate()
    以下是jsp的原代码,供参考String sqlStr = "insert into " + tableName
    + " (name,age,height,add_date) values(?,?,?,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))";pstmt = con.prepareStatement(sqlStr);
    pstmt.setString(1, client.getName());
    pstmt.setInt(2, client.getAge());
    pstmt.setInt(3, client.getHeight());
    //pstst.setString(4,sysdate);pstmt.executeUpdate();
      

  7.   

    应该使用java.sql.Timestamp类型的,而不是使用java.sql.Date类型
      

  8.   

    多谢以上的回答,用楼上的一种方法比较的好,就是timestamp,不过我在sql里面的运用了order by time,也是就是按时间排序,在oracle里可以排序,但是在jsp的显示页面怎么不是按时间排序的呢?多谢回答!