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

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

我试过了:

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

没有运气。 它仍然只将date部分存储到variables中。

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

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

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

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

这个函数将从SQLdate对象中返回一个转换后的javadate。

 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; } 

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

如果这不起作用,那么信息不在java.sql.Date对象中。 我期望JDBC驱动程序或数据库(实际上)将时间分量归零…或者信息不在首位。

我想你应该使用java.sql.Timestamp和相应的结果集方法,以及相应的SQLtypes。

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

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

布莱恩。

在最近的实现中,java.sql.Data是java.util.Date的一个子类,所以不需要转换。 请参阅: https : //docs.oracle.com/javase/1.5.0/docs/api/java/sql/Date.html