我从昨天起就一直在处理这个问题。
问题是我正在将查询迁移到jOOQ http://www.jooq.org当我尝试实现这一部分时,我陷入了困境:
select * from table where condition1 and date1 >= date_sub(now(), interval 1 days)
具体来说这部分条件:date_sub(now(),间隔1天)与 jOOQ。
所以我的问题是:
我应该使用 jOOQ 中的哪些函数来表示 date_sub?
我该如何实施间隔X天与jOOQ?
澄清一下,日期的类型时间戳
提前致谢!
解决方案:
稍微偏向于 Oracle 数据库,jOOQ 只需使用以下方法即可实现添加/减去天间隔:
// Java
DSL.currentTimestamp().sub(1);
上面的效果是:
-- Oracle
sysdate - 1
-- MySQL
date_add(current_timestamp(), interval -1 day)
当然,您也可以访问date_add() http://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#dateAdd%28org.jooq.Field,%20org.jooq.Field%29直接使用函数,如果你愿意的话:
// Java
DSL.dateAdd(DSL.currentTimestamp(), -1);
一些文档:
- 手册中有关日期时间算术的部分 http://www.jooq.org/doc/3.1/manual/sql-building/column-expressions/arithmetic-expressions/#N113ED
- 手册中有关区间数据类型的部分 http://www.jooq.org/doc/3.1/manual/reference/reference-data-types/data-types-intervals/
- Field.add() Javadoc http://www.jooq.org/javadoc/latest/org/jooq/Field.html#add%28org.jooq.Field%29
- DSL.dateAdd() Javadoc http://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#dateAdd%28org.jooq.Field,%20org.jooq.Field%29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)