我正在尝试使用jOOQ SQL 解析器解析SQL字符串。SQL包含如下自定义函数:select dateadd([*]'20190809', 'yyyymmdd', 1) from table1它无法用任何方言来解析。我想获取选择字段并操作限制偏移子句。有什么办法可以实现这一点吗?
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
有点标准的DATEADD()
函数(DATE_ADD()
在某些 SQL 方言中)采用多种不同的形式,具体取决于特定的 SQL 方言。
jOOQ 的 SQL 解析器当前仅支持以下变体之一:DATEADD(<datepart>, <interval>, <date>)
,它对应于 SQL Server 中的语法(以及其他一些方言)。
应用于您的示例(假设您想添加一天),这将是:
select dateadd(DAY, 1, date '2019-08-09') from table1
请注意,'20190809'
在大多数方言中 不是正确的日期文字,这就是我将其替换为 的原因date '2019-08-09'
。
另请注意,您可以使用jOOQ 翻译器来尝试这些东西。
假设您有自己的用户定义存储过程(也称为 )DATEADD
,那么您确实不走运,因为 jOOQ 的解析器尝试解析上述表达式。使用任何其他名称(例如DATEADD1
),jOOQ 的解析器解析此表达式不会有任何问题。然而,您可能想要配置 jOOQ 如何处理未知函数。
添加回答
举报
0/150
提交
取消