sql >> Databáze >  >> RDS >> PostgreSQL

Počítejte počet dní mezi 2 daty v JPA

Vypadá to, že hledáte řešení s JPQL pro provádění dotazů jako SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Obávám se, že v JPQL taková funkce není, takže doporučuji použít nativní SQL. Váš nápad, jestli rozšířit Dialect o Hibernate's SQLFunctionTemplate byl velmi chytrý. Raději bych to změnil tak, aby používal DATE_PART('day', end - start) protože toto je způsob, jak dosáhnout rozdílu dnů mezi daty s PostgreSQL.

Můžete také definovat svou funkci v PostgreSQL a používat ji s kritérii 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. Jak mohu ignorovat ampersandy ve skriptu SQL spuštěném z SQL Plus?

  2. PL/SQL:Chyba PLS-00306:nesprávný počet nebo typy argumentů ve volání spouštěné pro tabulku čísel

  3. Verze jádra PostgreSQL vs. Linux

  4. Jak vytvořit uloženou proceduru v SQL Server