sql >> Base de Datos >  >> RDS >> PostgreSQL

API de criterios JPA:cómo recuperar la fecha en formato mm/dd/yyyy

Criteria API define function expression para ejecutar funciones SQL nativas en el CriteriaBuilder interfaz de la siguiente manera:

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

donde name es el nombre de la función SQL, type es el tipo de retorno esperado y args es una lista variable de argumentos (si los hay).

Aquí hay un ejemplo de cómo usarlo en una consulta de Criterios:

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

donde

  • RadExamTimes :una entidad raíz hipotética
  • MM/DD/YYYY :un formato específico de la base de datos (en este ejemplo, formato de fecha Postgresql; para Oracle, utilice el formato Ora, etc.)
  • to_char :función de Postgresql para convertir el valor de la fecha en una cadena
  • begin_exam :el campo de fecha a ser formateado

La cadena de formato no se puede pasar tal cual para que literal() se usa el método para envolverlo.

Nota:El ejemplo anterior se prueba en la base de datos MySQL con la función MySQL y el formato de fecha correspondiente; pero el ejemplo cambió para coincidir con la sintaxis de Postgresql.