PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In che modo l'ordinamento degli oggetti in bucket può essere formulato come un'espressione JPQL valida?

Prima di tutto, hai bisogno di un modo JPA per calcolare la differenza tra startDate e pageDate nella rispettiva unità, che è alquanto difficile da formulare perché dipende molto dal database. Alla fine avrai bisogno di alcune funzioni personalizzate o di scrivere una query JPQL molto complicata.

Calcolare i giorni tra due date in PostgreSQL è facile come fare date_part('day', t2 - t1) . Per le ore che ti servono già date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) e minuti date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .

Per utilizzare queste funzioni di database in JPQL, puoi usare FUNCTION sintassi come FUNCTION('date_part', 'day', :startDate - pageDate) .

Alla fine, raggrupperai per tale espressione e farai un conteggio per id, qualcosa come il seguente

SELECT COUNT(o.id) FROM MyObject o GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)