首页 > 解决方案 > teiid 中的 DayOfWeek 函数在下推到 Oracle 时取决于语言环境

问题描述

在 teiid 文档中,DayOfWeek 函数的定义如下

返回星期几(星期日=1,星期六=7)

但是当 teiid 被下推到 Oracle 时,dayOfWeek 输出会因语言环境而异

美国地区

周日:1

德语语言环境

星期一:1

我调查了一下,发现翻译成 oracle 时的源查询, DayOfWeek 被翻译成 this to_number(TO_CHAR(g_0."DATE", 'D'))。Oracle 中的 to_char 方法取决于语言环境。

是否有替代 DayOfWeek 函数或解决此问题的某种解决方法?

标签: teiid

解决方案


https://community.oracle.com/ideas/24090有几个建议可以解决 oracle 不支持与 Teiid 的 org.teiid.iso8601Week=true 行为匹配的 ID 格式。除了根据这些建议之一进行本地代码修复之外,您还必须创建一个新的源函数来提供类似的功能

创建外部函数 ora_dow(param timestamp) 返回整数选项 ("teiid_rel:native-query" 'trunc($1) - trunc($1,''IW'') + 1');

也捕获为https://issues.redhat.com/browse/TEIID-6016


推荐阅读