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

Tæl antal dage mellem 2 datoer i JPA

Det ser ud til, at du leder efter en løsning med JPQL til at udføre forespørgsler som SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Jeg er bange for, at der ikke er en sådan funktionalitet i JPQL, så jeg anbefaler at bruge native SQL. Din idé om at udvide Dialect med Hibernates SQLFunctionTemplate var meget klog. Jeg vil hellere ændre det til at bruge DATE_PART('day', end - start) da dette er måden at opnå dages forskel mellem datoer med PostgreSQL.

Du kan også definere din funktion i PostgreSQL og bruge den med kriterierne function() .

'CREATE OR REPLACE FUNCTION "datediff"(TIMESTAMP,TIMESTAMP) RETURNS integer AS \'DATE_PART('day', $1 - $2);\' LANGUAGE sql;'

cb.function("datediff", Integer.class, end, start);


  1. Får NoClassDefFoundError, mens du prøver at bruge Proguard og SQLcipher i Android

  2. Find n nærmeste naboer for givet punkt ved hjælp af PostGIS?

  3. Omdøb en kolonne i MySQL

  4. Hvad hedder rør?