小编典典

jOOQ“ XTRACT(EPOCH FROM [field])”的解决方法?

sql

有一些语法可以将时间戳转换为各种日期部分,包括Unix纪元。它的工作方式如下(至少在最新的PostgreSQL中):

SELECT EXTRACT(EPOCH FROM "ts") FROM...

但是,正如我发现的讨论所证明的那样,jOOQ似乎不支持此语法,该讨论链接到jOOQ
github上仍未解决的Issue#2132

有什么解决方法?如何在jOOQ的语法中模拟这种行为(即,不必用纯SQL编写整个查询)?


阅读 268

收藏
2021-04-07

共1个答案

小编典典

jOOQ 3.10及更低版本的解决方法

您始终可以通过jOOQ求助于普通SQL

public static Field<Integer> extractEpochFrom(Field<Timestamp> field) {
    return DSL.field("extract(epoch from {0})", Integer.class, field);
}

jOOQ 3.11及更高版本中的支持

当前(jOOQ
3.11)对其他非标准DatePart类型(例如)的实验性支持DatePart.EPOCH。它可能已经适用于PostgreSQL,但不适用于其他数据库。

在将来的版本(包括jOOQ
3.12)中,将改进此支持,请参阅:https :
//github.com/jOOQ/jOOQ/issues/7794

2021-04-07