2015-07-16 1 views
5

Я использую jooq в своем проекте, и мне нужно запросить некоторые данные между двумя датами.JOOQ как запрос между датами

SQL-запрос, который производит правильные данные в

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

эквивалент jooq запрос, который я написал ниже, но не выдает требуемый результат

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

Запрос jooq производит результат но только производит записи, которые точно соответствуют значению fromDate. Таким образом, в основном он не работает для диапазона дат.

Может ли кто-нибудь помочь здесь?

+1

Что SQL заявление генерируется при вызове 'Query.getSQL (ParamType.INLINED)' в запросе jOOQ? –

ответ

1

Я думаю, что проблема заключается в прохождении отметки времени или даты и времени (Я не знаю, хорошо я). Поэтому вместо отправки e.x. «2015-07-16», вы получаете «2015-07-16 12:55:00» или «1436187300».

Сначала попробуйте отладить значение new Timestamp(fromDate.getTime()), и если я прав, попробуйте преобразовать его в простую дату без времени.

Для получения правильного значения даты без времени, вы можете использовать: