sql >> Database >  >> RDS >> PostgreSQL

Tel het aantal dagen tussen 2 datums in JPA

Het lijkt erop dat u een oplossing zoekt met JPQL om queries uit te voeren zoals SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Ik ben bang dat dergelijke functionaliteit niet in JPQL is, dus ik raad aan om native SQL te gebruiken. Jouw idee als je Dialect uitbreidt met Hibernate's SQLFunctionTemplate was heel slim. Ik zou het liever wijzigen om DATE_PART('day', end - start) . te gebruiken omdat dit de manier is om met PostgreSQL dagen verschil tussen datums te bereiken.

U kunt uw functie ook definiëren in PostgreSQL en deze gebruiken met de criteria 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. Bestaande gegevens bijwerken met SQLite

  2. ORA-00604 ORA-12705

  3. ORA-01618

  4. Een MySQL- of MariaDB-server voorbereiden voor productie - deel één