2011-05-20 102 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; 
    } 
相關問題