sql server 2008-如何在Cognos中获取特定日期范围之间的报告



我最近开始使用Cognos Report Studio。有一个带有4个表联接的T-sql代码。我只是通过将SQL工具箱拖动到Query Explorer,将代码粘贴到Cognos Report Studio中。报告确实成功运行。但现在我希望这份报告在每个月1日生成,到期日在该月的1日至30/31日之间。例如:如果我在5月1日收到一份报告,它应该提供到期日在5月31日到5月1号之间的数据记录。我尝试将以下代码添加到我已经编写的SQL代码中:

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

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

Cognos有一个添加月份的功能。(至少Cognos10是这样做的。(在表达式编辑器的函数选项卡上,它位于业务日期/时间函数下。它被称为_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))

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

相关内容

  • 没有找到相关文章

最新更新