QueryDSL:DateTimePath到格式化字符串

时间:2016-12-02 12:00:16

标签: java date jpql querydsl

我需要使用"比较"来比较日期和字符串。在querydsl。所以我需要将datetimepath转换为特定格式的字符串。就我而言,它是" MM / dd / yyyy" 这样的事情:

String dateString = "%20/2015%";
QueryBase whereClause = query.where(myEntity.date.toString("MM/dd/yyyy").like(dateString));

myEntity.date是DateTimePath<java.util.Date> 任何想法如何将其表示为字符串?

2 个答案:

答案 0 :(得分:3)

我发现的唯一解决方案是使用本机功能(在我的情况下是MySql)。 像这样:

Expressions.stringTemplate("DATE_FORMAT({0}, {1})", myEntity.date, "%m/%d/%Y")
           .likeIgnoreCase(dateString);

答案 1 :(得分:0)

试试这个

public static BooleanExpression getValue(DateTimePath<DateTime> inputDatePath, String ep){
    return inputDatePath.month().stringValue()
            .concat("/")
            .concat(inputDatePath.dayOfMonth().stringValue())
            .concat("/")
            .concat(inputDatePath.year().stringValue())
            .contains(ep); 
}   

query.where(getValue(myEntity.date , "11/20/2015"));