2016-12-02 3 views
1

Ich muss Datum mit Zeichenfolge vergleichen mit "wie" in Querydsl. Also muss ich Datetimepath in String in einem bestimmten Format konvertieren. In meinem Fall ist es "MM/tt /" So etwas:QueryDSL: DateTimePath zu formatierter String

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

myEntity.date ist DateTimePath<java.util.Date> Irgendwelche Ideen, wie es als String darstellen?

Antwort

0

Die einzige Lösung, die ich gefunden habe, ist native Funktion (MySql in meinem Fall) zu verwenden. Etwas wie folgt aus:

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

Versuchen Sie, diese

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

Dies wird für das Datumsformat in der Frage nicht, wo Monat 2 Ziffern ist, und Tag des Monats ist auch 2-stellig. –