我用如下语句向数据库中插入日期类型变量时,发现在数据库中日期的小时、分、秒部分都变成了0
.........
java.util.Date utDate = new java.util.Date();
        Date sqlDate = new Date(utDate.getTime());
...............preStmt.setDate(2, sqlDate);   preStmt是preparedStatement类型标量
怎样才能插入小时等时间呢?

解决方案 »

  1.   

    preStmt.setDate()换成preStmt.setTimestamp();参数从Date()换成Timestamp()。
      

  2.   

    public class Timestampextends Date
    一个与 java.util.Date 类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它添加保存 SQL TIMESTAMP 毫微秒值和提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。 注:此类型由 java.util.Date 和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递 java.util.Date 类型的值时,Timestamp.equals(Object) 方法永远不会返回 true,因为日期的毫微秒组件是未知的。因此,相对于 java.util.Date.equals(Object) 方法而言,Timestamp.equals(Object) 方法是不对称的。此外,hashcode 方法使用基础 java.util.Date 实现并因此在其计算中不包括毫微秒。 鉴于 Timestamp 类和上述 java.util.Date 类之间的不同,建议代码一般不要将 Timestamp 值视为 java.util.Date 的实例。Timestamp 和 java.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。