1.java.sql.Date是java.util.Date的子類,是一個包裝了毫秒值的瘦包裝器,允許JDBC將毫秒值標識為SQLDATE值。毫秒值表示自1970 年1 月1 日00:00:00 GMT以來經過的毫秒數。為了與SQLDATE的定義一致,由java.sql.Date 實例包裝的毫秒值必須通過將時間、分鍾、秒和毫秒設置為與該實例相關的特定時區中的零來“規范化”。說白了,java.sql.Date就是與數據庫Date相對應的一個類型,而java.util.Date是純java的Date。
2.JAVA里提供的日期和時間類,java.sql.Date和java.sql.Time,只會從數據庫里讀取某部分值,這有時會導致丟失數據。例如一個包含2002/05/22 5:00:57 PM的字段,讀取日期時得到的是2002/05/22,而讀取時間時得到的是5:00:57 PM. 你需要了解數據庫里存儲時間的精度。有些數據庫,比如MySQL,精度為毫秒,然而另一些數據庫,包括Oracle,存儲SQL DATE類型數據時,毫秒部分的數據是不保存的。以下操作中容易出現不易被發現的BUG:獲得一個JAVA里的日期對象。從數據庫里讀取日期試圖比較兩個日期對象是否相等。如果毫秒部分丟失,本來認為相等的兩個日期對象用Equals方法可能返回false。.sql.Timestamp類比java.util.Date類精確度要高。這個類包了一個getTime()方法,但是它不會返回額外精度部分的數據,因此必須使用...總之,java.util.Date 就是Java的日期對象,而java.sql.Date 是針對SQL語句使用的,只包含日期而沒有時間部分