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)