Cognos Report Studio 版本 10.2.1 中格式化日期提示的问题

Posted

技术标签:

【中文标题】Cognos Report Studio 版本 10.2.1 中格式化日期提示的问题【英文标题】:Trouble with formatting date prompt in Cognos Report Studio Version 10.2.1 【发布时间】:2020-02-25 08:41:21 【问题描述】:

我遇到了如下错误: UDA-SQL-0144 检测到算术异常。[IBM][CLI 驱动程序][DB2/NT64] SQL20448N “1993”无法使用 TIMESTAMP_FORMAT 函数的格式字符串“YYYY-MM-DD”解释。 SQLSTATE=22007 我不太确定出了什么问题...我尝试更改格式,但没有帮助。 我正在使用 to_date 形式,但我不确定它是否正确。 这是我正在使用的 SQL 选择:

select laborcode,
(select sum(workhours) from workperiod where calnum='KOPA'and workdate between to_date(#prompt('StartDate','date')#,'YYYY-MM-DD') and to_date(#prompt('EndDate','date')#,'YYYY-MM-DD')) -
(select count(calnum) from workperiod where calnum='KOPA'and workdate between to_date(#prompt('StartDate','date')#,'YYYY-MM-DD') and to_date(#prompt('EndDate','date')#,'YYYY-MM-DD') and shiftnum='HOLIDAY') * 8 as stevilo_praznikov_ure,
(select sum(lt.regularhrs) from labtrans lt where lt.laborcode = l.laborcode and lt.orgid = l.orgid and startdate between to_date(#prompt('StartDate','date')#,'YYYY-MM-DD') and to_date(#prompt('EndDate','date')#,'YYYY-MM-DD')) as delovne_ure,
(select sum(ass.laborhrs) from assignment ass where ass.laborcode = l.laborcode and ass.scheduledate between to_date(#prompt('StartDate','date')#,'YYYY-MM-DD') and to_date(#prompt('EndDate','date')#,'YYYY-MM-DD')) as assignment_ure 
from labor l

【问题讨论】:

to_date() 函数是 timestamp_format() 的同义词。输入到提示中的值必须遵循指定的模式 (DD.MM.YYYY)。否则 Db2 将抛出异常。 嗨@mao 感谢您的回答!我知道哦,输入的提示必须遵循模式。在我的数据库中是模式(YYYY.MM.DD),我第一次使用这个模式也没有工作。它只是一遍又一遍地告诉我这个错误。因此,如果我使用模式 (YYYY.MM.DD),它会显示相同的错误,但在结尾:无法使用格式字符串“YYYY.MM.DD” 进行解释。如果你能帮助我,我会非常感激。干杯 你能试试 YYYY-MM-DD 的格式看看会发生什么吗? 嗨@Daniel。我现在已经尝试了模式 YYYY-MM-DD,但错误仍然存​​在。现在在结尾处说:无法使用格式字符串“YYYY-MM-DD”进行解释。我需要在我的查询Filter details中加入一些表达式吗?我试过这样的表达式: [laborcode] >= ?StartDate? 和另一个 [laborcode] 但它没有意义,因为 laborcode只是在工人的 name.surname 样式。它没有错误地结束,但图表中没有值。除了劳动力代码聚合函数之外,我已经放置了所有 3 个数据项,所以它应该可以工作。 嗨@VAIJason。我检查了所有三个日期:工作日期、开始日期和预定日期。只有 scheduleate 有几行 scheduleate = null。另外两列充满了数据。如果我在 SQuirreL 中使用以下参数运行选择::StartDate:EndDate 并给它们一个范围,则选择完美。 【参考方案1】:

我已经通过提示解决了问题。我需要做的就是删除提示中的数据类型 "date" 并将格式模式设置为 YYYY-MM-DD 并且它正在正常工作。感谢大家的帮助,非常感谢! 现在选择:

select laborcode,
(select sum(workhours) from workperiod where calnum='KOPA'and workdate between to_date(#prompt('StartDate')#,'YYYY-MM-DD') and to_date(#prompt('EndDate')#,'YYYY-MM-DD')) -
(select count(calnum) from workperiod where calnum='KOPA'and workdate between to_date(#prompt('StartDate')#,'YYYY-MM-DD') and to_date(#prompt('EndDate')#,'YYYY-MM-DD') and shiftnum='HOLIDAY') * 8 as stevilo_praznikov_ure,
(select sum(lt.regularhrs) from labtrans lt where lt.laborcode = l.laborcode and lt.orgid = l.orgid and startdate between to_date(#prompt('StartDate')#,'YYYY-MM-DD') and to_date(#prompt('EndDate')#,'YYYY-MM-DD')) as delovne_ure,
(select sum(ass.laborhrs) from assignment ass where ass.laborcode = l.laborcode and ass.scheduledate between to_date(#prompt('StartDate')#,'YYYY-MM-DD') and to_date(#prompt('EndDate')#,'YYYY-MM-DD')) as assignment_ure 
from labor l

【讨论】:

以上是关于Cognos Report Studio 版本 10.2.1 中格式化日期提示的问题的主要内容,如果未能解决你的问题,请参考以下文章

各位,cognos active report和固定报表有啥区别

Cognos11中通过URL访问report的设置

Cognos 使用Resport Studio 制作报表,怎样设置参数?

cognos中reportstudio怎么创建报表展示版本

启动Cognos时报0106错误

cognos是啥?