我最近开始使用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。请告知代码中需要进行哪些更改才能成功运行。
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))
在这里找到它,它解释了一切。