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

JPA Criteria API:jak načíst datum ve formátu mm/dd/rrrr

Criteria API definuje function expression spouštět nativní funkce SQL v CriteriaBuilder rozhraní takto:

Funkce
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);

kde name je název funkce SQL, type je očekávaný návratový typ a args je proměnný seznam argumentů (pokud existují).

Zde je příklad, jak jej použít v dotazu na kritéria:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(String.class);
Root<RadExamTimes> root = cq.from(RadExamTimes.class);
cq.select( cb.function("to_char", String.class, root.get("begin_exam"), cb.literal("MM/DD/YYYY")));

TypedQuery<String> query = entityManager.createQuery(cq);
List<String> result = query.getResultList();

kde

  • RadExamTimes :hypotetická kořenová entita
  • MM/DD/YYYY :formát specifický pro databázi (v tomto příkladu formát data Postgresql; pro Oracle použijte formát Ora atd.)
  • to_char :Funkce Postgresql pro převod hodnoty data na řetězec
  • begin_exam :pole data, které se má formátovat

Formátovací řetězec nelze předat tak, jak je, takže literal() k jeho zabalení se používá metoda.

Poznámka:Výše ​​uvedený příklad je testován na databázi MySQL s funkcí MySQL a odpovídajícím formátem data; ale příklad se změnil tak, aby odpovídal syntaxi Postgresql.



  1. rozdíl mezi NLS_NCHAR_CHARACTERSET a NLS_CHARACTERSET pro Oracle

  2. Výjimka formátu Oracle Date v SQL Server Reporting Services

  3. EF 5 s oracle edmx StoreGeneratedPattern=Problém s identitou

  4. Jak přidat datum a časové razítko do INSERTu přes PHP s mySQL?