如何在 Cognos 中获取特定日期范围内的报告

问题描述 投票:0回答:3

我最近开始从事 Cognos Report Studio 的工作。有一个带有 4 个表连接的 T-sql 代码。我只是通过将 SQL 工具箱拖到查询资源管理器来将代码粘贴到 Cognos Report Studio 中。该报告确实成功运行。但现在我希望每月 1 日生成此报告,到期日为该月 1 日至 30 日/31 日。 例如:如果我在 5 月 1 日收到一份报告,它应该提供到期日期范围在 5 月 1 日至 5 月 31 日之间的数据记录。 我尝试将以下代码添加到我已经编写的 SQL 代码中:

WHERE 
CURR_MATURITY_DATE BETWEEN (DATEADD(MM, 0, GETDATE()), 0) AND (DATEADD(MM, 0, GETDATE()) +1, 0) -1)

此代码不起作用。 请注意:CURR_MATURITY_DATE 列的格式为:mm/dd/yyyy。请告知需要对代码进行哪些更改才能成功运行。

sql-server-2008 datetime timestamp cognos cognos-8
3个回答
1
投票

Cognos 有添加月份的功能。 (至少,Cognos 10 是这样。)在表达式编辑器的函数选项卡上,它位于业务日期/时间函数下。 它称为_add_months。 所以你的函数最终会变成类似

between (_add_months(1,current_date))

您还可以使用SQL Server功能。 您必须将这些文本参数(如 MM)放在大括号中。所以你最终会得到

dateadd({MM},0,current_date)

对于当月的第一天,在 TSQL 中您可以使用:

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
在 Cognos 中,语法为
DATEADD({MONTH}, DATEDIFF({MONTH}, 0, GETDATE()), 0)


1
投票

在 WHERE 子句中尝试这些:

每月第一天:

select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

本月最后一天:

select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()  )+1, 0))

这里找到它,它解释了一切。


0
投票

Excited_to_learn - 你有没有弄清楚这一点。我目前处于同样的情况,需要同样的报告。

© www.soinside.com 2019 - 2024. All rights reserved.