2015-07-16 1 views
5

J'utilise jooq dans mon projet et j'ai besoin d'interroger des données entre deux dates.JOOQ comment demander entre les dates

La requête SQL qui produit des données droit est

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

l'équivalent requête jooq que je l'ai écrit est ci-dessous, mais ne donne pas le résultat nécessaire

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 requête jooq produit résultat mais ne produit que des enregistrements qui correspondent exactement à fromDate. Donc, fondamentalement, cela ne fonctionne pas pour la plage de dates.

Quelqu'un peut-il aider ici?

+1

Quelle instruction SQL est généré lorsque vous appelez 'Query.getSQL (ParamType.INLINED)' sur la requête jOOQ? –

Répondre

1

Je pense que le problème est en passant un timestamp ou une date et le temps (je ne sais pas bien java). Donc, au lieu d'envoyer e.x. "2015-07-16", vous obtenez "2015-07-16 12:55:00" ou "1436187300". Essayez d'abord de déboguer la valeur de new Timestamp(fromDate.getTime()) et si j'ai raison, essayez de la convertir en une simple date sans temps.

Pour obtenir la valeur de date correcte, sans temps, vous pouvez utiliser: