数据库:MySql5.1.71
数据库持久层:Hibernate3
1.在数据库表中我要存放日期(年、月、日)和时间(时、分、秒),所以我用的是datetime类型。
2.在Hibernate的ORM层 *.hbm.xml 中所对应的JDK包类-类型为 java.sql.Timestamp。
3.而我在java类中(例如):取当前系统时间并保存到数据库,new Timestamp(new java.util.Date().getTime())、可以直接取出并保存。
JDK API 对Timestamp的描述:
public class TimestampextendsDate 一个与
java.util.Date 类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL
TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQL
TIMESTAMP 小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。
计算 Timestamp 对象的精度为二者之一:
一、19,其为 yyyy-mm-dd hh:mm:ss格式下的字符数。
二、20 + s,其为 yyyy-mm-dd hh:mm:ss.[fff...]格式下的字符数,s表示给定Timestamp的精度(其小数秒精度)。
注:此类型由 java.util.Date 和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递不是 java.sql.Timestamp 实例的对象时,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 之间的继承关系实际上指的是实现继承,而不是类型继承。
小知识:
MySql客户端编写SQL语句:select VERSION(); 可以查看服务端的数据库Service版本号。