sql >> Database >  >> RDS >> PostgreSQL

JPA Criteria API:hoe de datum op te halen in mm/dd/jjjj-formaat

Criteria API definieert function expression om native SQL-functies uit te voeren in de CriteriaBuilder interface als volgt:

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

waar name is de naam van de SQL-functie, type is het verwachte retourtype en args is een variabele lijst met argumenten (indien aanwezig).

Hier is een voorbeeld van hoe het te gebruiken in een Criteria-query:

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

waar

  • RadExamTimes :een hypothetische wortelentiteit
  • MM/DD/YYYY :een database-specifiek formaat (in dit voorbeeld Postgresql-datumformaat; voor Oracle gebruik Ora-formaat, enz.)
  • to_char :Postgresql-functie om datumwaarde naar string te converteren
  • begin_exam :het datumveld dat moet worden opgemaakt

De opmaakreeks kan niet worden doorgegeven zoals deze is, zodat de literal() methode wordt gebruikt om het in te pakken.

Opmerking:het bovenstaande voorbeeld is getest op MySQL-database met MySQL-functie en bijbehorende datumnotatie; maar het voorbeeld is gewijzigd om overeen te komen met de Postgresql-syntaxis.



  1. Een MySQL DB zaaien voor een gedockte Django-app

  2. met LIKE %% met LEFT JOIN

  3. Fout:ER_WRONG_VALUE_COUNT_ON_ROW:kolomtelling komt niet overeen met waardetelling in rij 1

  4. Hoe het FOR AUTO XML-resultaat in de tabel in te voegen?