sql >> Databasteknik >  >> RDS >> PostgreSQL

Räkna antalet dagar mellan 2 datum i JPA

Det verkar som att du letar efter en lösning med JPQL för att utföra frågor som SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .

Jag är rädd att det inte finns någon sådan funktionalitet i JPQL så jag rekommenderar att du använder inbyggd SQL. Din idé om att utöka Dialect med Hibernates SQLFunctionTemplate var väldigt smart. Jag skulle hellre ändra det till att använda DATE_PART('day', end - start) eftersom detta är sättet att uppnå dagars skillnad mellan datum med PostgreSQL.

Du kan också definiera din funktion i PostgreSQL och använda den med kriteriet 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. Query Store:Visar effekten av index på inlägg

  2. Hur SESSION_CONTEXT() fungerar i SQL Server

  3. Hur extraherar man två på varandra följande siffror från ett textfält i MySQL?

  4. DATEPART() Exempel i SQL Server