A. java 程序中比較時間 從資料庫獲取的時間(一個欄位) = 系統時間 如何用JPQL 實現
Select ***** from *** where 從資料庫獲取的時間(一個欄位) = getdate()
db2好像是current date
Select ***** from *** where 從資料庫獲取的時間(一個欄位) = current date
B. 如何正確比較日期 java.sql.Date
java.sql.Date比較:
import java.sql.Date;
例如今天是2010-12-2
Date d1 = new Date(System.currentTimeMili());
Date d2 = new Date(System.currentTimeMili()+1);//比d1晚1毫秒
日期上,我們認為d1和d2是相等的
但是
System.out.println(d1.before(d2));
輸出結果是true;
其實我們希望看到的是這兩個對象在日期上是相等的。
因為我們只關心「日期」,而「2010-12-2」不等於「2010-12-2」
這個結果顯然是我們所不能接受的。
究其原因,是因為Date內封裝了一個精確到毫秒的表示時間的
private transient long fastTime;
而before和after的函數的實現如下,都是判斷fastTime的值,所以達不到我們只比較日期的要求。
public boolean before(Date when) {
return getMillisOf(this) < getMillisOf(when);
}
public boolean after(Date when) {
return getMillisOf(this) > getMillisOf(when);
}
把日期格式成標準的「年月日」,然後對格式化後的對象進行比較,得到比較的結果
本文給出一種「格式成標准化」的方式
Date d1_temp = java.sql.Date.valueOf(d1.toString());
Date d2_temp = java.sql.Date.valueOf(d2.toString());
System.out.prinltn(d1_temp.equals(d2_temp));//輸出結果是true;
System.out.prinltn(d1_temp.before(d2_temp));//輸出結果是false;
System.out.prinltn(d1_temp.after(d2_temp));//輸出結果是false;
需要邏輯的話,可以寫成
if(d1_temp.before(d2_temp)){
.........
}
C. java里怎麼比較mysql存的時間和當前時間,大於當前時間7天,有詳細代碼嗎
sql中直接通過字元串比較就可以了
比如: xxx_time >= '2019-04-15 23:59:59'
如果是java的時間比較的方式就比較多了。
轉成date類型比較是比較常見的方式,或long類型的時間戳方式,或這統一格式的字元串方式、