2011-07-27 54 views
0

由於我們有兩個日期類別:java.sql.Datejava.util.Date。原因ResultSet#getDate()返回sql.Date而不是util.Date
同意sql.Date延伸util.Date。但是,當兩個類中的大多數方法看起來相同時,完全創建新類的原因是什麼?sql.date vs util.date

+1

該文檔非常清晰[http://download.oracle.com/javase/6/docs/api/java/sql/Date.html],如果您有兩個不同目的的類,最好是你會有兩堂課。 – MByD

+3

請參閱[java.util.Date vs java.sql.Date](http://stackoverflow.com/questions/2305973/java-util-date-vs-java-sql-date) – Jonas

回答

9

原因是正好在JavaDocsjava.sql.Date的:

要使用SQL DATE的定義符合,由java.sql.Date實例包裝的毫秒值必須是「規範化」通過設置小時,分鐘,秒和毫秒到零與該實例相關聯

所以一個java.util.Date具有「時間」的部分,而在java.sql.Date該時間在特定的時間區始終爲「零」,因爲(ANSI)SQL DATE數據類型也沒有時間。

+0

同樣在這裏! :)您還會注意到toString()和valueOf()方法被重寫以解析/設置ANSI日期格式。 –

+0

我非常抱歉。我沒有得到用javadocs寫的這個陳述的意思。我在發佈查詢之前閱讀它.Coulkd你請詳細說明一下嗎? –

+0

我只能重複自己:DATE沒有時間,這就是'java.sql.Date'確保的。 –

相關問題