sql >> Database >  >> RDS >> PostgreSQL

Hoe kan het sorteren van objecten in buckets worden geformuleerd als geldige JPQL-expressie?

Allereerst heb je een JPA-manier nodig om het verschil tussen de startDate . te berekenen en pageDate in de betreffende eenheid, die enigszins moeilijk te formuleren is omdat het erg databaseafhankelijk is. Uiteindelijk heb je wat aangepaste functies nodig of schrijf je een zeer gecompliceerde JPQL-query.

Het berekenen van de dagen tussen twee datums in PostgreSQL is net zo eenvoudig als date_part('day', t2 - t1) . Voor de uren die je al nodig hebt date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) en minuten date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .

Om deze databasefuncties in JPQL te gebruiken, kunt u de FUNCTION . gebruiken syntaxis zoals FUNCTION('date_part', 'day', :startDate - pageDate) .

Uiteindelijk groepeer je op zo'n uitdrukking en tel je op id, zoiets als het volgende

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




  1. sql verwijder alle rijen ouder dan 30 dagen

  2. geheugengebruik exporteren van database naar csv in php

  3. PG::InvalidColumnReference:ERROR:voor SELECT DISTINCT, ORDER BY-expressies moeten in de selectielijst verschijnen

  4. Vind de hostnaam en poort met behulp van PSQL-commando's