10

データベースの日付をJPAクエリの現在のdateTimeと比較したい:

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

JPQL クエリで現在の日付と時刻を参照するには、CURRENT_TIMESTAMP を使用する必要があります。

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 に答える