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类型的时间戳方式,或这统一格式的字符串方式、