sql >> Base de Datos >  >> RDS >> PostgreSQL

Cuente el número de días entre 2 fechas en JPA

Parece que está buscando una solución con JPQL para realizar consultas como SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Me temo que no existe tal funcionalidad en JPQL, por lo que recomiendo usar SQL nativo. Su idea es ampliar Dialect con SQLFunctionTemplate de Hibernate fue muy inteligente. Prefiero cambiarlo para usar DATE_PART('day', end - start) ya que esta es la forma de lograr días de diferencia entre fechas con PostgreSQL.

También puede definir su función en PostgreSQL y usarla con criterios 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);