在Java方面,日期通常由(设计欠佳,但不包括在内)表示
java.util.Date。它基本上是由支持大纪元时间中的味道long,也称为时间戳。它包含有关日期和时间部分的信息。在Java中,精度以毫秒为单位。
在SQL方面,有几个标准的日期和时间类型,DATE,TIME和TIMESTAMP(在一些DB也叫DATETIME),这是代表在JDBC为
java.sql.Date,java.sql.Time和
java.sql.Timestamp所有子类的
java.util.Date。精度取决于数据库,通常像Java一样以毫秒为单位,但是也可以以秒为单位。
与相反
java.util.Date,
java.sql.Date仅包含有关日期部分(年,月,日)的信息。像一样,Time仅包含有关时间部分(小时,分钟,秒)的Timestamp信息,并且包含有关两个部分的信息
java.util.Date。
在数据库(因此,
java.util.Date在Java端和
java.sql.TimestampJDBC端)中存储时间戳的通常做法是使用
PreparedStatement#setTimestamp()。
java.util.Date date = getItSomehow();Timestamp timestamp = new Timestamp(date.getTime());preparedStatement = connection.prepareStatement("SELECt * FROM tbl WHERe ts > ?");preparedStatement.setTimestamp(1, timestamp);从DB获取时间戳的正常做法是使用
ResultSet#getTimestamp()。
Timestamp timestamp = resultSet.getTimestamp("ts");java.util.Date date = timestamp; // You can just upcast.


