在teiid文档中,为DayOfWeek函数规定了以下定义
返回一周中的某一天(周日=1,周六=7(
但是当teiid被下推到Oracle时,dayOfWeek的输出会根据区域设置而有所不同
美国区域设置
周日:1
德语区域设置
周一:1
我调查了一下,发现当翻译到oracle时,源查询被翻译成了这个to_number(TO_CHAR(g_0."DATE", 'D'))
。Oracle中的to_char方法取决于区域设置。
对于这个问题,有没有DayOfWeek函数的替代方案或某种变通方法?
来源https://community.oracle.com/ideas/24090有几个建议可以解决oracle不支持与Teiid的org.Teiid.iso8601Week=true行为匹配的ID格式的问题。除了根据其中一个建议进行本地代码修复外,您还必须创建一个新的源函数来提供类似的功能
create foreign函数ora_dow(param timestamp(返回整数选项("teiid_rel:native query"trunc($1(-ttrunk($1,'IW'(+1'(;
也被捕获为https://issues.redhat.com/browse/TEIID-6016