开发者社区 问答 正文

在Java中处理MySQL日期时间和时间戳

在Java应用程序中,使用日期时间和时间戳的混合在MySQL数据库中添加和输入日期信息方面有什么好的折衷办法?

展开
收起
保持可爱mmm 2020-05-11 11:28:00 959 分享 版权
1 条回答
写回答
取消 提交回答
  • 在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.来源:stack overflow

    2020-05-11 12:00:17
    赞同 展开评论