在Java中处理MySQL日期时间和时间戳
在Java应用程序中,使用日期时间和时间戳的混合在MySQL数据库中添加和输入日期信息方面有什么好的折衷办法?
回答:
在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.Timestamp
JDBC端)中存储时间戳的通常做法是使用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.
以上是 在Java中处理MySQL日期时间和时间戳 的全部内容, 来源链接: utcz.com/qa/403721.html