まず、startDate
の差を計算するJPAの方法が必要です。 およびpageDate
それぞれのユニットで、データベースに非常に依存しているため、定式化がやや困難です。最終的には、いくつかのカスタム関数が必要になるか、非常に複雑なJPQLクエリを作成する必要があります。
PostgreSQLで2つの日付の間の日数を計算するのは、date_part('day', t2 - t1)
を実行するのと同じくらい簡単です。 。すでに必要な時間については、date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1)
および分date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1)
。
これらのデータベース関数をJPQLで使用するには、FUNCTION
を使用できます。 FUNCTION('date_part', 'day', :startDate - pageDate)
のような構文 。
最終的には、このような式でグループ化し、次のようにIDでカウントします
。
SELECT COUNT(o.id)
FROM MyObject o
GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)