select specific date format in jpa criteria query

社会主义新天地 提交于 2019-12-08 08:24:51

问题


I want to select date in particular format in multiselect of jpa criteria query like we use

select to_char(tn.dbdate,'yyyy-MM-dd') from transaction tn 
in oracle.

I am able to use

query.multiselect(cb.function("TO_CHAR",String.class,transaction.get("dbdate")) );

but this returns date in database format i.e.

Wed Apr 2 12:20:50 2014

but how to get this in specific date format

'yyyy-MM-dd'


回答1:


In current query no format is given as an argument to TO_CHAR function. That's why it cannot do much else than fall back to default. As documented, more than one arguments can also be passed to database function via CriteriaBuilder.function:

query.multiselect(
    cb.function("TO_CHAR",
                String.class,transaction.get("dbdate"), 
                cb.literal("yyyy-MM-dd")));



回答2:


You can take the date from DB and format it as you want later.




回答3:


This worked for me:

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() + "%"));


来源:https://stackoverflow.com/questions/22804010/select-specific-date-format-in-jpa-criteria-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!