PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Бройте дните между 2 дати в JPA

Изглежда, че търсите решение с JPQL за изпълнение на заявки като SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Опасявам се, че няма такава функционалност в JPQL, така че препоръчвам да използвате роден SQL. Вашата идея, ако разширите Dialect с SQLFunctionTemplate на Hibernate беше много умен. Предпочитам да го променя да използва DATE_PART('day', end - start) тъй като това е начинът да се постигне разлика в дните между датите с PostgreSQL.

Можете също да дефинирате функцията си в PostgreSQL и да я използвате с критерии 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на множество полета като запис в PostgreSQL с PL/pgSQL

  2. Как да сортирате резултата от string_agg()

  3. Условен оператор INSERT INTO в postgres

  4. разгънете postgresql масива в редове

  5. Как работи функцията to_number() в PostgreSQL