21

JPAクエリで現在の時刻を参照する日付範囲条件を設定する方法はありますか(データベース間で互換性があります)?

できます

SELECT m FROM Mail m WHERE m.sentAt < :date

しかし、パラメーターをバインドせずにそれを実行したい (これを名前付きクエリ リポジトリの一部として構成でき、日付計算ロジックが呼び出しコードを入力する必要がないようにするため)。

代わりに:date、ハードコード リテラルとして「currentTime - 3 分」が必要です。

4

2 に答える 2

4

Hibernate JPA実装とOracle方言を使用している場合は、SYSDATE現在の日付と時刻を返す関数を使用できます。1SYSDATE足すと1日増える。

分数の追加もサポートされています。

  • sysdate + 1/241時間追加します
  • sysdate + 1/(24*60)1分追加します
  • sysdate + 1/(24*60*60)秒を追加します

したがって、:date の代わりに、ハードコード リテラルとして "currentTime - 3 分" が必要です。

sysdate - 3/(24*60)現在の日付と時刻から 3 分減算します。

SELECT m FROM Mail m WHERE m.sentAt < sysdate - 3/(24*60)

3 分以上前のレコードが返され、パラメーターのバインドは必要ありません。

于 2013-09-07T20:19:37.650 に答える