【问题标题】:Converting java.sql.Date to java.util.Date将 java.sql.Date 转换为 java.util.Date
【发布时间】:2011-08-29 07:25:16
【问题描述】:

在保留时间戳的同时将 java.sql.Date 对象转换为 java.util.Date 的最简单方法是什么?

我试过了:

java.util.Date newDate = new Date(result.getDate("VALUEDATE").getTime());

没有运气。它仍然只是将日期部分存储到变量中。

【问题讨论】:

  • 这种继承是一种奇怪的设计遗产

标签: java jdbc


【解决方案1】:

如果您真的希望运行时类型为 util.Date,那么只需执行以下操作:

java.util.Date utilDate = new java.util.Date(sqlDate.getTime());

布赖恩。

【讨论】:

  • @PlexQ :如果您的 sqlDate 为空,则应该这样做,但也许我遗漏了一些明显的东西,因为您似乎使用了很多感叹号。
【解决方案2】:

此函数将从 SQL 日期对象返回转换后的 java 日期。

public static java.util.Date convertFromSQLDateToJAVADate(
            java.sql.Date sqlDate) {
        java.util.Date javaDate = null;
        if (sqlDate != null) {
            javaDate = new Date(sqlDate.getTime());
        }
        return javaDate;
    }

【讨论】:

    【解决方案3】:

    在最近的实现中,java.sql.Data 是 java.util.Date 的子类,因此不需要转换。 看这里:https://docs.oracle.com/javase/1.5.0/docs/api/java/sql/Date.html

    【讨论】:

      【解决方案4】:

      由于java.sql.Date 扩展了java.util.Date,你应该可以做到

      java.util.Date newDate = result.getDate("VALUEDATE");
      

      【讨论】:

      • 是的,但在运行时,newDate 仍将是java.sql.Date 的实例
      • @joeybaruch 说的是真的,如果你尝试 .toInstant() 方法,你会得到 UnsopportedMethodException,所以不推荐
      【解决方案5】:

      通过阅读源代码,如果java.sql.Date 确实有时间信息,则调用getTime() 将返回一个包含时间信息的值。

      如果这不起作用,则信息不在java.sql.Date 对象中。我希望 JDBC 驱动程序或数据库(实际上)将时间分量归零......或者信息一开始就不存在。

      我认为您应该使用java.sql.Timestamp 和相应的结果集方法,以及相应的SQL 类型。

      【讨论】:

      • 我正在查询 Oracle 10g。使用 ojdbc14.jar
      【解决方案6】:

      类 java.sql.Date 被设计为只携带一个没有时间的日期,所以你看到的转换结果对于这个类型是正确的。您需要使用 java.sql.Timestamp 来获取带有时间的完整日期。

      java.util.Date newDate = result.getTimestamp("VALUEDATE");
      

      【讨论】:

      • 那我试试这个:new Date(result.getTimestamp("VALUEDATE").getTime());
      • 这应该可以,但是由于java.sql.Timestamp 也派生自java.util.Date,您也可以只使用 Timestamp 实例。
      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2014-04-19
      • 2018-04-03
      • 2012-08-21
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多