比较JPA查询中的当前日期时间

时间:2012-07-27 10:45:17

标签: java jpa

我想将数据库中的日期与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;

我想比较当前的日期和时间。以上查询是否有效。 ??

2 个答案:

答案 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