datesqlutil
『壹』 java 編譯時出現Date與java.util.Date不兼容。求解。
你好,
我猜想你的hireDay對象,應該是一個自定義的Date類型的。
而Calendar類的getTime()方法,將返回java.util.Date類型的對象。
因此,等式左右兩端類型不同,導致編譯錯誤。
試著將hireDay,定義成為java.util.Date類型的對象,你的問題就會解決。
『貳』 java.util.Date和java.sql.Date的區別及應用
1) java.sql.Date是java.util.Date的子類,是一個包裝了毫秒值的瘦包裝器,允許 JDBC 將毫秒值標識為 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以來經過的毫秒數。 為了與 SQL DATE 的定義一致,由 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語句使用的,只包含日期而沒有時間部分。
『叄』 java.sql.Date,java.sql.Time和java.sql.Timestamp什麼區別
【父類】java.util.Date日期格式為:年月日時分秒
【子類】java.sql.Date日期格式為:年月日[只存儲日期數據不存儲時間數據]
【子類】java.sql.Time日期格式為:時分秒
【子類】java.sql.Timestamp日期格式為:年月日時分秒納秒(毫微秒)
針對不同的資料庫選用不同的日期類型
·Oracle的Date類型,只需要年月日,選擇使用java.sql.Date類型
·MS Sqlserver資料庫的DateTime類型,需要年月日時分秒,選擇java.sql.Timestamp類型
------------------------------------------
四種對象內部均使用系統時間作為標准數據
·系統時間:自 1970 年 1 月 1 日 00:00:00 GMT 以來的毫秒數,即格林尼治標准時間GMT) ·本地時間:根據時區不同列印出來的時間[當時區為GMT+0時,系統時間與本地時間相同]我們使用的是以本地時間為參考標準的
//java.util.Date 轉換成 java.sql.Date 格式
try{
SimpleDateFormat DateFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = DateFormate.parse("2011-5-31 14:40:50");
java.sql.Date sqlDate = new java.sql.Date(date1.getTime());
System.out.println(DateFormate.format(sqlDate));
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
//java.sql.Date 轉換成 java.util.Date 格式
java.sql.Date sqlDate1=java.sql.Date.valueOf("2005-12-12");
java.util.Date utilDate1=new java.util.Date(sqlDate1.getTime());
System.out.println("java.sql.Date 轉換成 java.util.Date 格式:"+f.format(utilDate1));
//java.util.Date轉換java.sql.Timestamp
new java.sql.Timestamp(new java.util.Date().getTime());//此處IDE報錯
//java.util.Date轉換java.sql.Time
new java.sql.Time(new java.util.Date().getTime());
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
我們可以使用DateFormat處理字元串來定義時間日期的格式
註:String都是先轉換為java.util.Date,然後再轉換成所需的格式
『肆』 java.sql.date與java.util.date區別
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()方法,但是它不會返回額外精度部分的數據,因此必須使用getNanos()方法。有毫微秒部分(即額外精度部分)的數值可能比沒有這個部分的數值的大一個毫秒。如果你知道你使用的資料庫保存了毫秒部分,可以用下面的代碼獲得的數值:
long time=timestamp.getTime()+timestamp.getNanos()/1000000;
毫微秒的部分就是為什麼一個java.sql.Timestamp對象不等於一個java.util.Date對象,而一個java.util.Date對象可能等於一個java.sql.Timestamp對象的原因。這使得equals方法應當保持的對稱被打破了。使用java.sql包中的時間相關的類是重要的,但是它們也可能導致人為的錯誤。這是因為,這些類的復雜性雖然已經在javadoc裡面清楚的描述了,但是由於這些類看上去很簡單而很少有人看這些文檔。
『伍』 如果一個類裡面同時引用了 java.util.Date 和 java.sql.Date 這個兩個包,請問聲明的時候該怎麼使用呢
首先不能同時引入,這樣會抱錯的。
使用的時候可以
java.util.Date date_1 = new java.util.Date(System.currentTimeMillis());
java.sql.Date date_2 = new java.sql.Date(System.currentTimeMillis());
『陸』 java.util.Date和java.sql.Date的區別和相互轉化
區別:
java.util.Date 就是在除了SQL語句的情況下面使用,java.sql.Date 是針對SQL語句使用的,它只包含日期而沒有時間部分
相互轉化:
java.util.Date 是 java.sql.Date 的父類(注意拼寫)。
前者是常用的表示時間的類,我們通常格式化或者得到當前時間都是用他後者之後在讀寫資料庫的時候用他,因為PreparedStament的setDate()的第2參數和ResultSet的getDate()方法的第2個參數都是java.sql.Date 。
轉換是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反過來是一樣的
『柒』 如何將java.util.date裝換為指定格式的java.sql.date、比如將當前時間轉換為YYYY-MM-DD格式的日期存入欄位
根據API
java.sql.Date是java.util.Date的子類。
java.util.Date() dateUtil=new java.util.Date();
java.sql.Date dateSql=new java.sql.Date(dateUtil.getTime());
而java.sql.Date轉為java.util.Date就簡單了。
java.util.Date() newDate=dateSql;(多態)
將java.util.Date類型的日期以YYYY-MM-DD格式轉換為字元串形式
String dateStr=new SimpleDateFormat("YYYY-MM-DD").format(new Date());
將字元串轉換為Date類型。
Date dateTemp=new SimpleDateFormat("YYYY-MM-DD").parse("2012-12-21");
『捌』 java.util.Date和java.sql.Date的區別及應用
java.util.Date和java.sql.Date的區別及應用
java.util.Date 就是在除了SQL語句的情況下面使用
java.sql.Date 是針對SQL語句使用的,它只包含日期而沒有時間部分
它都有getTime方法返回毫秒數,自然就可以直接構建
java.util.Date d = new java.util.Date(sqlDate.getTime());
...
--------------------------------------------------------------------------------
java.util.Date 是 java.sql.Date 的父類(注意拼寫)
前者是常用的表示時間的類,我們通常格式化或者得到當前時間都是用他
後者之後在讀寫資料庫的時候用他,因為PreparedStament的setDate()的第2參數和ResultSet的getDate()方法的第2個參數都是java.sql.Date
轉換是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反過來是一樣的
--------------------------------------------------------------------------------
繼承關系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具體的轉換關系就是java.util.Date d=new java.util.Date (new Java.sql.Date());
--------------------------------------------------------------------------------
sql.date,一般是在資料庫的時間欄位,util.date一般是日常日期欄位
--------------------------------------------------------------------------------
java.sql.Date主要是用於sql中的!
而java.util.Date用語一般的環境下都行!
--------------------------------------------------------------------------------
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
System.out.println(utilDate.getYear());
這里所有時間日期都可以被SimpleDateFormat格式化format()
f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf("2005-12-12");
utilDate=new java.util.Date(sqlDate.getTime());