2016-12-02 8 views
1

querydslで "like"を使用して日付と文字列を比較する必要があります。ですから、datetimepathを特定の形式の文字列に変換する必要があります。私の場合、それは "MM/DD/YYYY" だというような 何か:QueryDSL:フォーマットされた文字列へのDateTimePath

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

myEntity.dateは、文字列としてそれを表現する方法をDateTimePath<java.util.Date> 任意のアイデアですか?

答えて

0

を試してみてください。このような 何か:

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

は、私が見つけた唯一の解決策は、ネイティブ関数(私の場合でのMySQL)を使用することです。この

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桁で、月の日でも2桁で質問の日付形式では動作しません。 –

関連する問題