我最近开始从事 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。请告知需要对代码进行哪些更改才能成功运行。
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)
在 WHERE 子句中尝试这些:
每月第一天:
select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
本月最后一天:
select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0))
在这里找到它,它解释了一切。
Excited_to_learn - 你有没有弄清楚这一点。我目前处于同样的情况,需要同样的报告。