Først og fremmest har du brug for en JPA-metode til at beregne forskellen mellem startDate og pageDate i den respektive enhed, hvilket er lidt svært at formulere, fordi det er meget databaseafhængigt. I sidste ende skal du bruge nogle brugerdefinerede funktioner eller skrive en meget kompliceret JPQL-forespørgsel.
At beregne dagene mellem to datoer i PostgreSQL er lige så let som at gøre date_part('day', t2 - t1) . For de timer, du allerede har brug for date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) og minutter date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .
For at bruge disse databasefunktioner i JPQL kan du bruge FUNCTION syntaks som FUNCTION('date_part', 'day', :startDate - pageDate) .
I sidste ende vil du gruppere efter et sådant udtryk og foretage en optælling efter id, noget i stil med følgende
SELECT COUNT(o.id)
FROM MyObject o
GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)