【问题标题】:OBIEE: Casting String to date then date to stringOBIEE:将字符串转换为日期,然后将日期转换为字符串
【发布时间】:2015-04-27 17:11:57
【问题描述】:
FILTER("source"."recordCount" USING "source"."snapshot_date" = 
    EVALUATE('TO_CHAR(%1, ''YYYYMMDD'')', TIMESTAMPADD(SQL_TSI_DAY, -7,  EVALUATE('TO_DATE(%1, %2)', "source"."snapshot_date" , 'YYYYMMDD'))))

所以我在这里有这段代码。我知道有些人会说“只需使用 AGO 功能”但不知何故它会因为它与其他表的连接而导致问题,所以我在这里想要实现的目标就像是翻拍。这个过程是这样的:

那里的快照日期实际上是 varchar 格式而不是日期。所以它就像“20131016”,我试图将其更改为日期,然后使用 TIMESTAMPADD 函数从中减去 7 天,最后将其返回给 varchar 以与 FILTER 一起使用。

在使用硬编码值(例如“20131016”)测试 FILTER 时,此 sn-p 以某种方式起作用,但是当使用上面的代码进行测试时,所有行都是空白的。在纸面上,我认为会发生的过程是这样的。 "20131016" 转换为格式为 20131016 (yyyymmdd) 的日期,然后小于 7 天:20131009,然后再次转换为 char "20131009" 用于过滤器。

但不知何故,这不会发生。我认为数据格式不适用于字符串->日期或日期->字符串转换。这导致值根本不匹配。

有人知道我的代码有什么问题吗?

顺便说一句,我已经尝试过使用 CAST 而不是 EVALUATE 或 TO_TIMEDATE 来获得相同的结果。哦,这是BMM中列的公式。

谢谢

【问题讨论】:

    标签: obiee


    【解决方案1】:

    通过查看 BI 服务器生成的 SQL,您可能会得到一些线索。我看不出您的列表达式有任何问题,因此我不会将您的调试仅限于此。

    返回空值的查询通常是由设置不正确的级别引起的(尤其是在逻辑表源上,但也可能在度量列上)。这通常会导致物理 SQL 中出现某种形式的SELECT NULL FROM ...

    【讨论】:

      【解决方案2】:

      试试这个:

      FILTER("source"."recordCount" USING "source"."snapshot_date" = 
          EVALUATE('TO_CHAR(%1, %2)', TIMESTAMPADD(SQL_TSI_DAY, -7,  EVALUATE('TO_DATE(%1, %2)', TO_CHAR("source"."snapshot_date" , 'YYYYMMDD') , 'YYYYMMDD')) , 'YYYYMMDD'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 2011-12-14
        • 2016-05-03
        相关资源
        最近更新 更多