2015-07-16 13 views
5

Sto usando jooq nel mio progetto e ho bisogno di interrogare alcuni dati tra due date.JOOQ come query tra le date

la query SQL che produce dati destra è

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

la query jooq equivalente che ho scritto è al di sotto, ma non dà il risultato richiesto

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(); 

La query jooq produce risultato ma produce solo record che corrispondono esattamente a fromDate. Quindi in pratica non funziona per l'intervallo di date.

Qualcuno può aiutare qui?

+1

Qual è SQL generato quando chiamate 'Query.getSQL (ParamType.INLINED)' sulla query jOOQ? –

risposta

1

Penso che il problema sia nel passare un timestamp o una data e l'ora (non conosco bene java). Quindi, invece, inviando e.x. "2015-07-16", ricevi "2015-07-16 12:55:00" o "1436187300".

Provare prima a eseguire il debug del valore di new Timestamp(fromDate.getTime()) e, se ho ragione, provare a convertirlo in una data semplice senza tempo.

Per ottenere il valore corretto data senza tempo si possono utilizzare: