teiid - 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 函数或解决此问题的某种解决方法?
解决方案
从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');
推荐阅读
- kotlin - 如何在scatter mp mp Android图表中绘制趋势线(或限制线)
- r - 如何通过对其行之一的条件评估来设置组的整个列
- android - 通过命令行为 android 构建我的 Unity 项目的简单命令
- swift - 当您可以访问同一文件中的类时,Swift 为什么要使用扩展?
- apache-flink - Flink KeyedProcessFunction 不向后续步骤发送数据
- swift - 获取 MIDIObjectPropertyChangeNotification 返回的属性值
- sql-server - 使一个记录的最后一个日期成为存储过程中下一个记录的第一个日期
- swift - (不能分配给属性:“_products”是一个“让”常量)
- firebase - 无法将 React Native(Expo)中的图像上传到 Firebase 存储:TypeError:_firebase.default.storage 不是函数
- brain.js - 我应该使用什么 Brainjs 模型来预测质量趋势(软件)