如何在 JOOQ 中使用 toChar 函数?

Posted

技术标签:

【中文标题】如何在 JOOQ 中使用 toChar 函数?【英文标题】:How to use toChar function in JOOQ? 【发布时间】:2013-11-20 06:26:29 【问题描述】:

我必须在JOOQ 中使用toChar() 函数吗?现在我使用了下面的代码

 TO_CHAR(PaymentDate, 'YYYY-MM-DD') <= TO_CHAR(SYSDATE,'YYYY-MM-DD')");

我必须将其转换为 JOOQJOOQ这个怎么用?

【问题讨论】:

【参考方案1】:

jOOQ 3.2 未明确支持 Oracle 的 TO_CHAR() 函数。我为此添加了一个功能请求:#2832。

与此同时,您将不得不求助于纯 SQL as documented in the manual。例如,你可以写:

// Create reusable fields:
Field<String> f = DSL.field(
    "TO_CHAR(0, 'YYYY-MM-DD')", String.class, T.PaymentDate);

// Create reusable conditions:
Condition c = DSL.condition(
    "TO_CHAR(0, 'YYYY-MM-DD') <= TO_CHAR(SYSDATE, 'YYYY-MM-DD')", 
    T.PaymentDate);

请注意,0 是对 DSL.condition(String, QueryPart...) 的第一个 QueryPart 参数的引用。

【讨论】:

TO_CHAR 没有进入 jOOQ 3.3。功能请求已移至github.com/jOOQ/jOOQ/issues/3064 @Thilo:从技术上讲,这是一个不同的功能请求。我们当时已经实现了OracleDSL.toChar()……但你是对的——从与方言无关的角度来看,jOOQ 中仍然缺少该功能。我们将不得不进行调查并花一些时间来了解所有数据库供应商如何支持此功能 就我而言,我需要 H2.formatDateTime。简单的 SQL 解决方法效果很好,谢谢。 (并且 formatDateTime 本身是 H2 缺少支持将日期截断为一个月的一种解决方法,也许日期截断比通用 toChar 功能更容易在供应商之间实现。我想你可以将非常复杂的东西放入该格式字符串中)。跨度> @Thilo:复杂性可能并不重要。我们还支持正则表达式谓词,其语法为very different flavours across vendors。在这些情况下,我们只关心参数语义,而不是内容。 DSL.trunc(date, datePart) 目前不支持 H2 日期截断。我已注册 #3781 以提醒 jOOQ 3.6 效仿这一点 嘿,我现在在 Jooq 3.11 中运行,是否添加了此功能?

以上是关于如何在 JOOQ 中使用 toChar 函数?的主要内容,如果未能解决你的问题,请参考以下文章

jOOQ:如何在选择查询中调用 Sql 用户定义函数

如何在 JOOQ 中公开新的 SQL 函数

如何使用“LIKE”函数通过 JOOQ 选择字符串数组

如何在 jOOQ 中转换“to_json()”PostgreSQL 函数?

如何使用 jOOQ 执行特定查询

如何在 jOOQ 中使用 Scala 的字符串插值?