10

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

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

4

2 回答 2

17

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);
于 2012-07-27T10:54:40.643 回答
7

JPA 定义了特殊的 JPQL 表达式,这些表达式在执行查询时被评估为数据库服务器上的日期和时间:

CURRENT_DATE- 被评估为当前日期(一个java.sql.Date实例)。

CURRENT_TIME- 被评估为当前时间(一个java.sql.Time实例)。

CURRENT_TIMESTAMP- 被评估为当前时间戳,即日期和时间(一个java.sql.Timestamp实例)。

更多信息:点击这里

于 2017-09-23T14:45:28.473 回答