Jooq查询时间的条件写法

Jooq查询时间的条件写法

国内Jooq的文档实在太少了,需要用到时间查询的时候居然找不到任何资料。自己整理了一下几种用法。

查询在某一天的记录


public List<Record> findList(LocalDate date){
    return create
           .selectFrom(Record)
           .where(Record.createDate
                   .between(date.atStartOfDay(), date.plusDays(1).atStartOfDay())
           )
           .fetch()?.into(Record.class)
}

date的格式是“2017-03-09“,这里createDate的时间格式是LocalDateTime,所以我将date转换成LocalDateTime。解析出来的sql语句是这样的'record'.'create_date' between '2017-03-09T00:00' and '2017-03-10T00:00'


查询从某一天到某一天的记录

public List<Record> findList(LocalDate date){
    return create
           .selectFrom(Record)
           .where(Record.createDate
                   .cast(LocalDate.class)
                   .between(date, date.plusDays(1))
           )
           .fetch()?.into(Record.class)
}

这里我将createDate转换成了LocalDate,再查询在“2017-03-09”和“2017-03-10”之间的记录。这里返回的结果是包含“03-09”到“03-10”两天的。


查询在某一天之前的记录(不包括作参数的那天)

between(date, date.plusDays(1)) 改成 lessThan(date)


查询在某一天之后的记录(不包括作参数的那天)

between(date, date.plusDays(1)) 改成 greaterThan(date)


查询在某一天之前的记录(包括作参数的那天)

between(date, date.plusDays(1)) 改成 lessOrEqual(date)


查询在某一天之后的记录(包括作参数的那天)

between(date, date.plusDays(1)) 改成 greaterOrEqual(date)


PS:直接在.where(Record.createDate.cast(LocalDate.class).eq(date)条件语句中判断equals,理论上是可行的。然而我这边生成的sql放在数据库中能够返回数据的,但是程序中返回空集。如有大神知道原因,麻烦告知,谢谢。


转载请注明出处
感觉自己萌萌哒
http://blog.csdn.net/qq_19937081/article/details/60964024

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值