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

Jak lze řazení objektů do segmentů formulovat jako platný výraz JPQL?

Nejprve potřebujete způsob JPA pro výpočet rozdílu mezi startDate a pageDate v příslušné jednotce, což je poněkud obtížné formulovat, protože je velmi závislé na databázi. Nakonec budete potřebovat nějaké vlastní funkce nebo napsat velmi komplikovaný dotaz JPQL.

Počítání dnů mezi dvěma daty v PostgreSQL je stejně snadné jako date_part('day', t2 - t1) . Pro hodiny, které již potřebujete date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) a minuty date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .

Chcete-li použít tyto databázové funkce v JPQL, můžete použít FUNCTION syntaxe jako FUNCTION('date_part', 'day', :startDate - pageDate) .

Nakonec budete seskupovat podle takového výrazu a počítat podle id, něco jako následující

SELECT COUNT(o.id) FROM MyObject o GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)




  1. Převeďte časové razítko ve formátu řetězce TZ na časové razítko v Oracle

  2. SQL*Plus:Vynutí, aby vrátil kód chyby

  3. Synchronizujte databázi na ipadu se vzdálenou databází

  4. PostgreSQL se nemůže připojit:definice služby nenalezena