En primer lugar, necesita una forma JPA de calcular la diferencia entre startDate
y pageDate
en la unidad respectiva, que es algo difícil de formular porque depende mucho de la base de datos. Al final, necesitará algunas funciones personalizadas o escribir una consulta JPQL muy complicada.
Calcular los días entre dos fechas en PostgreSQL es tan fácil como hacer date_part('day', t2 - t1)
. Para las horas que ya necesita date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1)
y minutos date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1)
.
Para usar estas funciones de base de datos en JPQL, puede usar la FUNCTION
sintaxis como FUNCTION('date_part', 'day', :startDate - pageDate)
.
Al final, agruparás por tal expresión y harás un conteo por id, algo como lo siguiente
SELECT COUNT(o.id)
FROM MyObject o
GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)