我是Cognos的新手,我正在尝试向一个列添加一个过滤器,该列只允许在昨天凌晨4点到今天凌晨3点之间的行。我在db2中有一个工作查询但是当我尝试将它添加到Cognos中的过滤器时,我得到一个解析错误。另外,我在属性中发现我尝试过滤的列的数据类型是Unknown(Unsupported)类型。我开始为每个时间帧创建两个数据项表达式,我试图限制数据。但是我在第一个上遇到了解析错误:
[Presentation Layer].[Cr dtime]=timestamp(current date) - 1 day + 4 hour
这在我的db2本地测试数据库中有效,但在Cognos中甚至无法编译。我也尝试将列转换为时间戳,但这也不起作用。任何帮助表示赞赏。我也尝试使用_add_days函数,但我仍然遇到解析错误。同样对列进行采样我得到的值似乎是这个字符串的时间戳:2016-01-02T11:11:45.000000000
最后,如果我让这两个过滤器工作,我希望原始过滤器接近这种语法:
[表示层]。[Cr dtime]介于[昨天凌晨4点]和[今天凌晨3点]之间
答案 0 :(得分:0)
这是您的过滤器:
[Presentation Layer].[Cr dtime] between
cast(_add_hours(_add_days(current_date,-1),4),timestamp)
and
cast(_add_hours(current_date,3),timestamp)
这是有效的,因为Cognos中的 current_date 没有时间组件。如果您将其直接转换为时间戳类型,您会看到日期的时间部分为12:00:00.000 AM或午夜。知道了这一点,我们就可以简单地添加我们想要的午夜之后的时间,作为时间戳类型进行投射并在过滤器中使用它。