Allereerst heb je een JPA-manier nodig om het verschil tussen de startDate
. te berekenen en pageDate
in de betreffende eenheid, die enigszins moeilijk te formuleren is omdat het erg databaseafhankelijk is. Uiteindelijk heb je wat aangepaste functies nodig of schrijf je een zeer gecompliceerde JPQL-query.
Het berekenen van de dagen tussen twee datums in PostgreSQL is net zo eenvoudig als date_part('day', t2 - t1)
. Voor de uren die je al nodig hebt date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1)
en minuten date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1)
.
Om deze databasefuncties in JPQL te gebruiken, kunt u de FUNCTION
. gebruiken syntaxis zoals FUNCTION('date_part', 'day', :startDate - pageDate)
.
Uiteindelijk groepeer je op zo'n uitdrukking en tel je op id, zoiets als het volgende
SELECT COUNT(o.id)
FROM MyObject o
GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)