有一些语法可以将时间戳转换为各种日期部分,包括Unix纪元。它的工作方式如下(至少在最新的PostgreSQL中):
SELECT EXTRACT(EPOCH FROM "ts") FROM...
但是,正如我发现的讨论所证明的那样,jOOQ似乎不支持此语法,该讨论链接到jOOQ github上仍未解决的Issue#2132。
有什么解决方法?如何在jOOQ的语法中模拟这种行为(即,不必用纯SQL编写整个查询)?
您始终可以通过jOOQ求助于普通SQL:
public static Field<Integer> extractEpochFrom(Field<Timestamp> field) { return DSL.field("extract(epoch from {0})", Integer.class, field); }
当前(jOOQ 3.11)对其他非标准DatePart类型(例如)的实验性支持DatePart.EPOCH。它可能已经适用于PostgreSQL,但不适用于其他数据库。
DatePart
DatePart.EPOCH
在将来的版本(包括jOOQ 3.12)中,将改进此支持,请参阅:https : //github.com/jOOQ/jOOQ/issues/7794