2011-05-20 64 views
39

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

我想:

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

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

+0

这种继承是一个奇怪的设计传统 – seand 2011-05-20 00:45:49

回答

47

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

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

我会尝试这则:(result.getTimestamp( “VALUEDATE”)的getTime()) 新的日期; – mservidio 2011-05-20 00:48:39

+0

这应该起作用,但由于'java.sql.Timestamp'也是从'java.util.Date'派生的,所以你可以使用Timestamp实例。 – x4u 2011-05-20 00:53:16

+0

这样做。谢谢! – mservidio 2011-05-20 00:54:47

5

由于java.sql.Date延伸java.util.Date,你应该能够做到

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

是的,但在运行时,'newDate'仍然是'java.sql.Date'的一个实例。 – 2016-10-05 11:56:33

3

从阅读源代码,如果java.sql.Date没有真正有时间信息,调用getTime()将返回包含时间的值信息。

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

我认为你应该使用java.sql.Timestamp和相应的resultset方法以及相应的SQL类型。

+0

我在查询Oracle 10g。使用ojdbc14.jar – mservidio 2011-05-20 00:53:28

3

如果你真的想运行时类型是util.Date则只是这样做:

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

Brian。

5

该函数将从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; 
    } 
相关问题