【问题标题】:Sql timestamp to Java date?Sql时间戳到Java日期?
【发布时间】:2012-06-18 20:16:55
【问题描述】:

我有一个数据库,它将具有标准 sql 格式的 UMT 时间戳。如何提取该数据并使用它设置 java 日期对象?

据我所知mysql是yyyy-mm-dd hh:mm:ss至于java,日期/时间的东西我一直不知道。

如果有人知道这方面的好图书馆,我愿意接受建议。

【问题讨论】:

    标签: java mysql date jdbc


    【解决方案1】:

    为什么不直接读成Date

    Date date = resultSet.getTimestamp("date_field");
    
    Timestamp timestamp = resultSet.getTimestamp("date_time_field");
    

    【讨论】:

    • 与其他实际上不是 java.sql.Timestamp 的 java.util.Date 实例相比,这是 NOT 安全的。一个新的 java.util.Date 应该由 java.sql.Timestamp 的 long 值生成
    【解决方案2】:

    Timestamp 是 Date 的子类,这意味着它可以在 Date 所在的任何地方使用。唯一的区别是,Timestamp 比 Date 更精确(由于 SQL 规范)。

    只需使用:

    Timestamp t = resultSet.getTimestamp("columnname");
    Date d = t;
    

    话虽如此,将 JDBC 返回的时间戳转换为适当的日期值(省略纳秒)有一些好处。当您在应用程序的某个远程部分比较时间戳和日期时,时间戳和日期将不相等,即使它们看起来“大致”相同的时间值。因此,如果这可能导致问题,请仅使用 Timestamp 返回的 .getTime() 值创建一个新的 Date 实例)

    在我的博客中了解更多信息:Timestamp and Date equality when using Hibernate

    (尽管博客条目是关于 Hibernate,但它也适用于您的情况)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-29
      • 2014-05-16
      • 2014-12-03
      • 2018-09-07
      • 1970-01-01
      • 2013-11-03
      • 2011-03-29
      • 2013-03-02
      相关资源
      最近更新 更多