2014-02-05 7 views
6

Ich benutze Postrges db. Meine Domain hat ein Datumsfeld:grails ORM, wie man sucht Datum ohne Zeit

java.util.Date requestedDate; 

ich nach dem Datum in meinem Controller zu suchen, ich versuche:

eq ("requestedDate", requestedDate) 

Dies funktioniert gut, aber das Problem ist, dass Datum und Uhrzeit genau zu passend dafür. Aber in der Anwendung wird der Benutzer nur das Datum eingeben, um Elemente zu suchen (z. B. geben Sie mir alle Anfragen, die am 2014-02-05 gemacht wurden und die Browser-Anwendung wird die aktuelle Zeit der Anfrage hinzufügen). Daher schlägt der Vergleich fehl, da die vom Benutzer eingegebene Zeit sich von der Zeit bei der Erstellung der Anforderung unterscheidet. Ich versuchte 'like', aber es löst Fehler aus.

Wie nur Datum zu vergleichen?

Antwort

9

Man könnte so etwas tun:

Date now = new Date() 
now.clearTime() 

def results = Meeting.withCriteria { 
    between('date', now, now+1) 
} 

Also diese Zeit Teil des aktuellen Datums abstreift, und dann funktioniert ein ‚zwischen‘ query (zwischen Mitternacht nur 24 Stunden gegangen und Mitternacht später).

+0

danke @ rcgeorge23, es funktioniert – vikas

0

Noch sieht es so aus, als gäbe es keinen bequemen Weg, dies zu realisieren. Sie benötigen einen kleinen Umweg, indem Sie den Beginn des Tages und das Ende des Tages berechnen und den Zwischenoperator verwenden.

EDIT Ich sah gerade jetzt rcgeorge23 gab Ihnen das richtige Beispiel dafür.