在 Cognos 中添加过滤器以提取时间戳介于昨天凌晨 4 点和今天凌晨 3 点之间的行

Add Filter to extract rows where the timestamp falls in between yesterday at 4 AM and today at 3 AM in Cognos

我是 Cognos 的新手,我正在尝试向一个列添加一个过滤器,该列只允许昨天凌晨 4 点和今天凌晨 3 点之间的行。我在 db2 中有一个有效的查询,但是当我尝试将它添加到 Cognos 中的过滤器时,出现了解析错误。此外,我在属性中发现我要过滤的列的数据类型是未知(不支持)类型。我首先为我试图限制数据的每个时间范围创建了两个数据项表达式。但是我在第一个上遇到了解析错误:

[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 点] 之间

这是您的过滤器:

[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 没有时间组件。如果您将其直接转换为 timestamp 类型,您会看到日期的时间部分为 12:00:00.000 AM,即午夜。知道了这一点,我们就可以简单地添加我们想要的午夜后的时间,转换为 timestamp 类型并在过滤器中使用它。