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

Hvordan kan sortering af objekter i buckets formuleres som gyldigt JPQL-udtryk?

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)




  1. ændre format dato MySql

  2. kolonne kan ikke udskydes null

  3. Negativ grænse offset i mysql

  4. Mange-til-mange-relation i Entity Framework med relationsinformation