【发布时间】:2017-05-26 01:31:44
【问题描述】:
想要将 7 月 01 日设置为月份和日期,但有一个年份变量。总是希望默认为最近的 7 月 01 日。
必须在 Cognos 10.2 中的参数范围内工作。尝试了几个带有 date2strings 和 string2date 函数的 If 语句。还尝试了一系列旨在递归过滤数据的列。
逻辑 如果 current_month
此时无法只见树木不见森林。继续探索,如果实现将发布解决方案。
【问题讨论】:
标签: cognos-10
想要将 7 月 01 日设置为月份和日期,但有一个年份变量。总是希望默认为最近的 7 月 01 日。
必须在 Cognos 10.2 中的参数范围内工作。尝试了几个带有 date2strings 和 string2date 函数的 If 语句。还尝试了一系列旨在递归过滤数据的列。
逻辑 如果 current_month
此时无法只见树木不见森林。继续探索,如果实现将发布解决方案。
【问题讨论】:
标签: cognos-10
您希望将日期保留为日期格式,并尽可能避免转换为字符串和串联。 Cognos 为您提供了几个无需转换即可操作日期的本机函数。
这是你的表情:
_add_years(
_add_months(
_first_of_month(
current_date
),
7 - extract(
month,
current_date
)
),
floor(
extract(
month,
current_date
)
/ 7
) - 1
)
如果你从里到外检查它会更容易理解。
_first_of_month() 函数返回当前月份的第一天。然后,我们使用一些数学来确定要传递给 _add_months() 函数的偏移量,该函数将针对每个可能的月份值将当前月份的第一天转换为当年七月的第一天。最后,我们再次使用数学来使用 _add_years() 函数将 0 或 1 年添加到结果日期。对于小于 7 的所有月份,我们添加 -1,对于 7 个月及以上的月份,我们添加 0。
【讨论】:
这行得通。仍在试图弄清楚 _make_timestamp () 如何神奇地知道当前 FY 开始日期?
if ( month( current_date ) 6 ) then ( _make_timestamp ( [Year of Today] + 0, 7, 1 ) ) else NULL
【讨论】: