我想将数据库中的日期与JPA查询中的当前日期时间进行比较:
captureLimitDate< currentDateTime
我的要求如下:
database.captureLimitDate:04/07/2012 19:03:00 currentDateTime:04/07/2012 20:03:00
我的JPAQuery是这样的:
SELECT o FROM Operation o"
+ " WHERE ( o.merchantId =:merchantId ) AND "
+ "(o.captureLimitDate < currentDateTime ) ";
Operation类的captureLimitDate为java.util.Date
@Generated(value = "XA", comments = "0,_8BedAMXZEeGHf_Dj4YaPyg")
private Date captureLimitDate;
我想比较当前的日期和时间。以上查询是否有效。 ??
答案 0 :(得分:9)
必须使用CURRENT_TIMESTAMP来引用JPQL查询中的当前日期和时间:
select o from Operation o
where o.merchantId = :merchantId
and o.captureLimitDate < CURRENT_TIMESTAMP
如果当前日期和时间实际上是来自用户输入的日期(因此不是当前日期和时间,那么您就像执行merchantId
一样:
select o from Operation o
where o.merchantId = :merchantId
and o.captureLimitDate < :maxDateTime
然后使用
设置参数query.setParameter("maxDateTime", maxDateTime, TemporalType.TIMESTAMP);
答案 1 :(得分:3)
JPA定义了特殊的JPQL表达式,在执行查询时,它们被计算到数据库服务器上的日期和时间:
CURRENT_DATE
- 评估为当前日期(java.sql.Date
个实例)。
CURRENT_TIME
- 被评估为当前时间(java.sql.Time
个实例)。
CURRENT_TIMESTAMP
- 被评估为当前时间戳,即日期和时间
(a java.sql.Timestamp
个实例)。
更多信息:Click here