Zunächst benötigen Sie eine JPA-Methode zur Berechnung der Differenz zwischen startDate
und pageDate
in der jeweiligen Einheit, was etwas schwer zu formulieren ist, weil es sehr datenbankabhängig ist. Am Ende benötigen Sie einige benutzerdefinierte Funktionen oder schreiben eine sehr komplizierte JPQL-Abfrage.
Die Berechnung der Tage zwischen zwei Daten in PostgreSQL ist so einfach wie date_part('day', t2 - t1)
. Für die Stunden benötigen Sie bereits date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1)
und Minuten date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1)
.
Um diese Datenbankfunktionen in JPQL zu verwenden, können Sie die FUNCTION
verwenden Syntax wie FUNCTION('date_part', 'day', :startDate - pageDate)
.
Am Ende werden Sie nach einem solchen Ausdruck gruppieren und nach ID zählen, etwa wie folgt
SELECT COUNT(o.id)
FROM MyObject o
GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)