在jpa条件查询中选择特定日期格式

时间:2014-04-02 07:11:53

标签: date jpa criteria-api

我想在多选jpa条件查询中选择特定格式的日期 像我们一样使用  

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

我可以使用

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

但是这会以数据库格式返回日期,即

Wed Apr 2 12:20:50 2014

但如何以特定的日期格式获取

'yyyy-MM-dd'

3 个答案:

答案 0 :(得分:7)

在当前查询中,没有给出格式作为TO_CHAR函数的参数。这就是为什么除了违约之外它不能做太多其他事情。作为documented,也可以通过CriteriaBuilder将多个参数传递给数据库函数。函数:

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

答案 1 :(得分:0)

您可以从数据库中取出日期,然后根据需要对其进行格式化。

答案 2 :(得分:0)

这对我有用:

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