Java中的時間類型
java.sql包下給出三個與數據庫相關的日期時間類型,分別是:
Date:表示日期,只有年月日,沒有時分秒。會丟失時間;
Time:表示時間,只有時分秒,沒有年月日。會丟失日期;
Timestamp:表示時間戳,有年月日時分秒,以及毫秒。
注:這三個類都是java.util.Date的子類。
時間類型相互轉換
把數據庫的三種時間類型賦給java.util.Date,基本不用轉換,因為這是把子類對象給父類的引用,不需要轉換。
java.sql.Date date = …
java.util.Date d = date;
java.sql.Time time = …
java.util.Date d = time;
java.sql.Timestamp timestamp = …
java.util.Date d = timestamp;
當需要把java.util.Date轉換成數據庫的三種時間類型時,這就不能直接賦值了,這需要使用數據庫三種時間類型的構造器。java.sql包下的Date、Time、TimeStamp三個類的構造器都需要一個long類型的參數,表示毫秒值(時間戳)。創建這三個類型的對象,只需要有毫秒值即可。我們知道java.util.Date有getTime()方法可以獲取毫秒值(時間戳),那么這個轉換也就不是什么問題了。
java.utl.Date d = new java.util.Date();
java.sql.Date date = new java.sql.Date(d.getTime()); //會丟失時分秒
Time time = new Time(d.getTime()); //會丟失年月日
Timestamp timestamp = new Timestamp(d.getTime());