我在我的项目中使用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完全匹配的记录。所以基本上它不适用于日期范围。
有人可以帮忙吗?
答案 0 :(得分:1)
我认为问题在于传递时间戳或日期和时间(我不太了解java)。所以改为发送e.x. “2015-07-16”,你得到“2015-07-16 12:55:00”或“1436187300”。
首先尝试调试new Timestamp(fromDate.getTime())
的值,如果我是对的,请尝试将其转换为没有时间的简单日期。
要获得正确的日期值,您可以使用:
Java 8包java.time LocalDate https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
或lib Joda Time http://joda-time.sf.net/