将java.sql.Date转换为java.util.Date

时间:2011-05-20 00:37:02

标签: java jdbc

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

我试过了:

java.util.Date newDate = new Date(result.getDate("VALUEDATE").getTime());
没有运气。它仍然只将日期部分存储到变量中。

6 个答案:

答案 0 :(得分:56)

java.sql.Date类只能在没有时间的情况下携带日期,因此您看到的转换结果对于此类型是正确的。您需要使用java.sql.Timestamp来获取时间的完整日期。

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

答案 1 :(得分:8)

由于java.sql.Date延伸java.util.Date,您应该可以

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

答案 2 :(得分:8)

如果你真的希望运行时类型是util.Date,那么就这样做:

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

布赖恩。

答案 3 :(得分:7)

此函数将从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;
    }

答案 4 :(得分:3)

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

如果不起作用,则该信息不在java.sql.Date对象中。我希望JDBC驱动程序或数据库(实际上)将时间组件归零......或者首先不存在信息。

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

答案 5 :(得分:-2)

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