sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan sortering av objekt i hinkar formuleras som ett giltigt JPQL-uttryck?

Först och främst behöver du ett JPA-sätt att beräkna skillnaden mellan startDate och pageDate i respektive enhet, vilket är lite svårt att formulera eftersom det är väldigt databasberoende. I slutändan kommer du att behöva några anpassade funktioner eller skriva en mycket komplicerad JPQL-fråga.

Att beräkna dagarna mellan två datum i PostgreSQL är lika enkelt som att göra date_part('day', t2 - t1) . För timmarna behöver du redan date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) och minuter date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .

För att använda dessa databasfunktioner i JPQL kan du använda FUNCTION syntax som FUNCTION('date_part', 'day', :startDate - pageDate) .

I slutändan kommer du att gruppera efter ett sådant uttryck och räkna efter id, ungefär som följande

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




  1. script för siffror som saknas fungerar inte?

  2. Importera databas till MySQL eller MariaDB

  3. HA för MySQL och MariaDB - Jämför Master-Master-replikering med Galera Cluster

  4. Mysql - hitta konversation som endast hålls av två användare