sql >> Databasteknik >  >> RDS >> PostgreSQL

JPA Criteria API:hur man hämtar datum i formatet mm/dd/åååå

Criteria API definierar function expression för att köra inbyggda SQL-funktioner i CriteriaBuilder gränssnitt enligt följande:

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

där name är namnet på SQL-funktionen, type är den förväntade returtypen och args är en variabel lista med argument (om några).

Här är ett exempel på hur du använder det i en kriteriefråga:

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();

var

  • RadExamTimes :en hypotetisk rotentitet
  • MM/DD/YYYY :ett databasspecifikt format (i detta exempel Postgresql-datumformat; för Oracle använd Ora-format, etc)
  • to_char :Postgresql-funktion för att konvertera datumvärde till sträng
  • begin_exam :datumfältet som ska formateras

Formatsträngen kan inte skickas som den är så att literal() metod används för att slå in den.

Obs:Ovanstående exempel är testat på MySQL-databas med MySQL-funktion och motsvarande datumformat; men exemplet ändrades för att matcha Postgresql-syntaxen.



  1. Generera SQL Skapa skript för befintliga tabeller med Query

  2. MySQL - varför inte indexera varje fält?

  3. SQL - Hur man undslipper parenteser i PostgreSQL

  4. hur infogar man automatiskt referenser för främmande nyckel i tabeller i mysql eller JDBC?