2015-07-16 6 views
5

Ich verwende jooq in meinem Projekt und ich muss einige Daten zwischen zwei Daten abfragen.JOOQ wie Abfrage für zwischen Daten

Die SQL-Abfrage, die richtigen Daten produziert, ist

select created_on from queue_token where created_on between '2015-07-16' and '2015-07-17' and token_queue_id=1; 

die äquivalente jOOQ Abfrage, die ich geschrieben habe, ist unten, aber gibt nicht das gewünschte Ergebnis

create.select().from(com.database.tables.QueueToken.QUEUE_TOKEN) 
        .where(com.database.tables.QueueToken.QUEUE_TOKEN.TOKEN_QUEUE_ID.equal(1)) 
        .and(com.database.tables.QueueToken.QUEUE_TOKEN.CREATED_ON.between(new Timestamp(fromDate.getTime())).and(new Timestamp(toDate.getTime()))) 
        .fetch(); 

Das jOOQ Abfrageer erzeugt Es werden jedoch nur Datensätze erstellt, die exakt mit dem fromDate übereinstimmen. Also im Grunde funktioniert es nicht für den Datumsbereich.

Kann jemand hier helfen?

+1

Welche SQL-Anweisung generiert, wenn Sie 'Query.getSQL (ParamType.INLINED)' auf der jOOQ-Abfrage aufrufen? –

Antwort

1

Ich denke, das Problem besteht in der Übergabe eines Zeitstempels oder Datums und Zeit (ich weiß nicht Java gut). Also anstatt e.x. "2015-07-16", erhalten Sie "2015-07-16 12:55:00" oder "1436187300".

Versuchen Sie, zuerst den Wert new Timestamp(fromDate.getTime()) zu debuggen, und wenn ich Recht habe, versuchen Sie, es in ein einfaches Datum ohne Zeit zu konvertieren.

Um eine korrekte Datumswert ohne Zeit bekommen können Sie:

Verwandte Themen