通过高级 SQL 过滤器进行 OBIEE11g 日期操作/比较
Posted
技术标签:
【中文标题】通过高级 SQL 过滤器进行 OBIEE11g 日期操作/比较【英文标题】:OBIEE11g date manipulation/comparison via the advanced SQL filter 【发布时间】:2015-09-14 17:12:58 【问题描述】:我在使用高级 SQL 过滤器和日期比较进行分析时遇到了问题。
我有两个日期字段,Report Date
和 Validated Date
。我正在高级 SQL 过滤器中进行比较,这两个日期应该匹配。
在这种情况下,Report Date
是 28-FEB-2012 12:00
,Validated Date
是 28-FEB-2012 20:00
。我的分析表明这两个日期是相等的。除了技术上,它们不是。
用 SQL 表示,我正在努力做到这一点:
TO_CHAR(REPORT_DATE, 'DD-MON-YYYY') = TO_CHAR(VALIDATED_DATE, 'DD-MON-YYYY')
我已在高级 SQL 过滤器中尝试过该行,但它不起作用。我试过了:
EVALUATE(to_date(%1, %2), REPORT_NAME, 'DD-MON-YYYY')
...而 OBIEE 不接受它。
那么,OBIEE 11g 专家,我如何正确比较这些日期,以便清楚地发现它们不匹配?
【问题讨论】:
【参考方案1】:你看过OBIEE生成的物理SQL吗?也许以毫秒为单位存在差异。您是否需要比较小时和分钟,或者与 CAST AS DATE 函数进行比较是否有效。 另外,您没有提到为什么Evaluate不起作用,您是否调整了OBIEE配置文件中的参数以使用该功能? 问候
【讨论】:
【参考方案2】:您可以将两者都转换为时间戳并将它们与timestampdiff() 进行比较
TIMESTAMPDIFF(interval, timestamp1, timestamp2)
示例:
SELECT TIMESTAMPDIFF
(
SQL_TSI__SECOND,
CAST (report_date as TIMESTAMP),
CAST ( validated_date as TIMESTAMP)
)
FROM table;
然后您可以将结果用作条件(例如,如果差异大于 0 秒,则为 X)
最详细的时间间隔是 SQL_TSI_SECOND,因此如果 @Ana GH 建议的毫秒数不同,这将不起作用
【讨论】:
以上是关于通过高级 SQL 过滤器进行 OBIEE11g 日期操作/比较的主要内容,如果未能解决你的问题,请参考以下文章