2016-12-02 2 views
1

querydsl에서 "like"를 사용하여 날짜를 문자열과 비교해야합니다. 그래서 datetimepath를 특정 형식의 문자열로 변환해야합니다.QueryDSL : 형식이 지정된 문자열의 DateTimePath

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

myEntity.date 문자열로 표현하는 방법을 DateTimePath<java.util.Date> 모든 아이디어입니다 : 내 경우는 뭔가 같은 "MM/DD/YYYY는"입니까?

답변

0

유일한 해결책은 기본 기능 (내 경우에는 MySQL의)를 사용하는 것입니다보십시오. 이 같은 뭔가 :

Expressions.stringTemplate("DATE_FORMAT({0}, {1})", myEntity.date, "%m/%d/%Y") 
      .likeIgnoreCase(dateString); 
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")); 
+0

이것은 달의 날짜 달 2 자리 인 질문의 형식으로, 일에 대해 작동하지 않습니다 또한이 자리입니다. –