【问题标题】:JOOQ: get difference between two dates in minutesJOOQ:在几分钟内获得两个日期之间的差异
【发布时间】:2018-11-08 22:28:20
【问题描述】:

我需要找到所有带有now() - date > 5 min 日期字段的记录

试过了

.and(DSL.timestampDiff(now, TABLE_HISTORY.DATE).gt(DayToSecond.valueOf((1/86400).toDouble())))

但是ofc不成功

【问题讨论】:

    标签: postgresql kotlin jooq


    【解决方案1】:

    将列移到等式的一侧,将常数移到另一侧总是更好。这样,可以应用放置在列上的索引。因此:

    date < now() - interval '5 minutes'
    

    或者在 jOOQ 中

    TABLE_HISTORY.DATE.lt(now.sub(new DayToSecond(0, 0, 5)))
    

    或者使用 Kotlin 的运算符重载:

    TABLE_HISTORY.DATE.lt(now - new DayToSecond(0, 0, 5))
    

    【讨论】:

    • 谢谢。这对我来说很有用。在 kotlin 中:TABLE_HISTORY.DATE.lt(DSL.currentTimestamp() - DayToSecond(0, 0, 5)))
    • @E.Big:你当然是对的。我在答案中添加了运算符重载版本
    • 我猜它不能使用&lt; 因为返回类型?
    • @AlexeyRomanov: a &lt; b 被 Kotlin 翻译成 a.compareTo(b) &lt; 0,这在 jOOQ 上下文中没有意义。见:kotlinlang.org/docs/reference/…
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多