【问题标题】:Date arithmetic in Cognos 8Cognos 8 中的日期算术
【发布时间】:2012-10-12 17:44:36
【问题描述】:

我需要的是一个数据项表达式,它输出去年当前季度的开始日期。查找当前年份很容易,从该日期减去 1 年也是如此。但除此之外,我被卡住了。

我目前每个季度都有一个丑陋的if 表达式,例如:

if (extract(month,current_date) in (10,12,12)) 然后 ((extract(year,_add_years (current_date,-1))||'-10-01'))

但无论我做什么,我都无法将年份和日期连接成字符串,我可以将其转换为日期对象。上面的代码给出了错误:

“加法”操作对以下数据类型组合无效:“整数”和“字符”

尝试使用cast() 将整数转换为字符时出现此错误。尝试将字符数组转换为日期时,我也会收到此错误:

“condexp”操作对以下数据类型组合无效:“字符”和“整数”

尝试使用 SQL Server 特定函数(它是一个 SQL Server 数据库)只是给我一个错误,即这些函数无法用于本地处理,所以我似乎无法使用 SS 日期算术,我找不到任何特别适用于 Cognos 的内置日期函数的东西。

如何操作日期以将年份添加到已知的日/月组合并将其用作日期对象?

【问题讨论】:

    标签: cognos cognos-8


    【解决方案1】:

    我使用的是 cognos 10.1.1,但它可以工作。

    您可以使用以下代码获取该值:

    _make_timestamp(
      extract(year, _add_years(current_date, -1)),
      (floor((extract(month,current_date)-1)/3)*3+1),
      01
    )
    

    以下是获取季度起始月份的简单方法。

    (floor((extract(month,current_date)-1)/3)*3+1),
    

    您可以将时间戳转换为日期或字符串。

    cast(
      _make_timestamp(
      extract(year, _add_years(current_date, -1)),
      (floor((extract(month,current_date)-1)/3)*3+1),
      01
      ),
      date
    )
    

    ,

    cast(
      cast(
        _make_timestamp(
          extract(year, _add_years(current_date, -1)),
          (floor((extract(month,current_date)-1)/3)*3+1),
          01
        ),
        date),
        varchar(10)
    )
    

    另外,您可以在获得日值时使用提取功能。

    extract(day, _first_of_month (current_date))
    

    【讨论】:

      【解决方案2】:

      我会使用 Cognos 中存在的 SQLSERVER 内置函数。
      这是一个适合我的表达式:

      DATEADD({month},(3)*((DATEPART({quarter},[FullDateAlternateKey]))-1),
      DATEADD({YEAR}, DATEDIFF({YEAR}, 0, dateadd({year},-1,[FullDateAlternateKey])), 0))
      

      FullDateAlternateKey 字段是我的日期字段(来自 ADVERTUREWORKS DW DB)。
      如果您仍然有问题,请尝试通过在新的简单列表报告上尝试此表达式来隔离问题。

      【讨论】:

        猜你喜欢
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 2017-08-23
        • 2011-02-23
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多