PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Contar o número de dias entre 2 datas no JPA


Parece que você está procurando uma solução com JPQL para realizar consultas como SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Receio que não exista essa funcionalidade no JPQL, por isso recomendo usar SQL nativo. Sua ideia se estender o Dialect com o SQLFunctionTemplate do Hibernate foi muito inteligente. Prefiro alterá-lo para usar DATE_PART('day', end - start) pois esta é a maneira de obter a diferença de dias entre as datas com o PostgreSQL.

Você também pode definir sua função no PostgreSQL e usá-la com critérios 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);