希望将7月01设置为月和日,但有一个年度变量。总是想违约到最近一年的7月1日。
必须在Cognos10.2中的参数内工作。使用date2strings和string2date函数尝试了几个If语句。还尝试了一系列用于递归筛选数据的列。
逻辑如果current_month <= 6,则年份(current_date,-1 )其他年份(Current_date)。想把这一年和xxxx 06-01连接起来,或者最好是06/01/xxxx。继续获取运行时错误,而不是查询计算中的错误。
在这一点上看不到树木的森林。继续探索,如果实现了就会发布解决方案。
发布于 2017-05-24 18:38:55
您希望将日期保持在日期格式,并在可能的情况下避免转换为字符串和连接。Cognos为您提供了几个本机函数来操作日期,而不必进行转换。
这是你的表情:
_add_years(
_add_months(
_first_of_month(
current_date
),
7 - extract(
month,
current_date
)
),
floor(
extract(
month,
current_date
)
/ 7
) - 1
)如果你把它从内往外看,就更容易理解了。
函数返回当前月份的第一天。然后,我们使用一些数学来确定要传递给_add_months()函数的偏移量,该函数将把当前月份的第一个值转换为当前年份中的每个月份值的7月1日。最后,我们再次使用数学将0或1年添加到结果日期,使用_add_years()函数。对于所有小于7的月份,我们加-1,对于月份7和更大的月份,我们加0。
发布于 2017-05-25 17:31:44
这个很管用。还在试图弄清楚_make_timestamp ()是如何神奇地知道当前FY开始日期的吗?
如果(月份( current_date )<7),则( _make_timestamp (今天的年份- 1,7,1))如果(月份( current_date )>6),则( _make_timestamp (今天的年份+ 0,7,1))否则为空。
https://stackoverflow.com/questions/44164988
复制相似问题