问题描述
我正在使用方解石库通过 API 查询我的数据,我发现名为 TO_TIMESTAMP https://calcite.apache.org/docs/reference.html 的函数但是当我调用它时给出异常,表明没有具有此签名的函数
我想做什么:
SELECT TO_TIMESTAMP(cast(ORGINALTIMESTAMP as varchar),cast('yyyy-MM-dd HH:mm:ss' as varchar)) as TEST from my_table
我得到的例外:
未找到与函数签名 TO_TIMESTAMP(
知道我做错了什么吗?
解决方法
要解决此问题,请在用于连接 Calcite 的 JDBC 连接字符串中包含 fun=postgresql
,该字符串以 jdbc:calcite:
开头。
在 Calcite 中,TO_TIMESTAMP
是特定于方言的运算符。这意味着它不包含在默认方言中,这就是它出现在 Calcite's table of dialect-specific operators 中的原因。
TO_TIMESTAMP
的“c”(兼容性)列包含值“o p”,这意味着 TO_TIMESTAMP
在 Oracle 和 PostgreSQL 函数表中启用。这就是 fun=postgresql
解决问题的原因; fun=oracle
也可以。