seleccionar formato de fecha específica en jpa criterios de consulta

Quiero para seleccionar la fecha en el formato en particular en multiselect de jpa criterios de consulta
al igual que hacemos

select to_char(tn.dbdate,'yyyy-MM-dd') de la transacción tn 

en oracle.

Soy capaz de utilizar

consulta.multiselect(cb.función("TO_CHAR",String.class de la transacción.get("dbdate")) );

pero esta devuelve la fecha en formato de base de datos es decir,

Wed Apr 2 12:20:50 2014

pero cómo conseguir que esta en formato de fecha específica

'yyyy-MM-dd'

InformationsquelleAutor user3488146 | 2014-04-02

3 Kommentare

  1. 7

    En la consulta actual formato no es dada como argumento a la función TO_CHAR. Es por eso que no se puede hacer mucho más que caer en default. Como documentado, más de uno los argumentos pueden ser también pasa a la función de base de datos a través de CriteriaBuilder.función:

    query.multiselect(
        cb.function("TO_CHAR",
                    String.class,transaction.get("dbdate"), 
                    cb.literal("yyyy-MM-dd")));
    • gracias, pero me había hecho la prueba.su compilación de error para cb.la función() método.Debe haber algún tipo de expresión en lugar de la cadena en su lugar (‘aaaa-MM-dd’).
    • A la derecha, cb.literal debe ser usado para tener formato como Expresión<Cadena>.
    • Gracias mucho … cb.literal() resuelve mi problema. su trabajo ahora 🙂
    • No trabajo para mí ..recibiendo el error como NameError: no método de la «función» de los argumentos (org.jruby.RubyString,org.jruby.Ru byClass,org.hibernate.ejb.criterios.ruta de acceso.SingularAttributePath,org.hibernate.ejb. criterios.expresión.LiteralExpression) en Java::OrgHibernateEjbCriteria::Criteri aBuilderImpl
    • En lugar de «yyyy-MM-dd» intentar «%Y-%m-%d». Consulte stackoverflow.com/questions/33153144/…
  2. 0

    Usted puede tomar la fecha a partir de la base de datos y el formato de él como desee más tarde.

    • No, no estoy usando clases personalizadas, es decir, necesito mostrar directamente como se obtienen de la base de datos. Por tanto necesita un formato de solo consulta
    • Se puede utilizar una consulta nativa que hace to_char(tn.dbdate,’yyyy-MM-dd’)?
    • yo sí puedo, pero esa no es la solución.no hay necesidad de solución en JPA criterios o JPQL
  3. 0

    Esto funcionó para mí:

    Expression<String> dateStringExpr = cb.function("to_char", String.class,
            root.get("effectiveStartDate"), cb.literal("YYYY-MM-DD HH12:MI:SS"));
    
    ls.add(cb.like(cb.lower(dateStringExpr), "%" + effectiveStartDate.get().toLowerCase() + "%"));

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea