PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setDate(8, new Date());
这样写会报错,应该如何获得系统日期插入呢?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【qwe8254】截止到2008-07-16 11:54:08的历史汇总数据(不包括此帖):
    发帖的总数量:38                       发帖的总分数:1359                     每贴平均分数:35                       
    回帖的总数量:155                      得分贴总数量:53                       回帖的得分率:34%                      
    结贴的总数量:33                       结贴的总分数:1100                     
    无满意结贴数:9                        无满意结贴分:430                      
    未结的帖子数:5                        未结的总分数:259                      
    结贴的百分比:86.84 %               结分的百分比:80.94 %                  
    无满意结贴率:27.27 %               无满意结分率:39.09 %                  
    楼主加油
      

  2.   

    不能直接用数据库的当前时间吗?
    如果一定要这样,你看看你set的那个date是java.util的还是java.sql的。
    这里要用java.sql.Date
      

  3.   

    注意参数类型。setDate() 方法要求 java.sql.Date,而 java.sql.Date 的构造函数不能为空。
    所以正确做法是:
    pstmt.setDate(8, new Date(System.currentTimeMillis()));
    或者:
    pstmt.setDate(8, new Date(new java.util.Date().getTime()));
      

  4.   

    我在插入前做个判断,如果插入的值为空的话就new Date()
    但是这样是错的,如何才能插入系统日期呢?
      

  5.   

    另外,setDate()只能是日期型,最小单位是日。如果需要时分秒需要:
    pstmt.setTiemstamp(8, new Timestamp(System.currentTimeMillis())); 
    或者: 
    pstmt.setTimestamp(8, new Timestamp(new java.util.Date().getTime()));
      

  6.   

    精确到秒:pstmt.setTimestamp(8,new Timestamp(System.currentTimeMillis()));
    精确到日:pstmt.setDate(8,new Date(System.currentDate()));