You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cognos计算两日期间隔剔除周日且次日为计数首日的方法求助

Cognos剔除周日且从起始日次日起算的天数计算方案

你之前的逻辑是按剔除周六周日(每周5个工作日)设计的,不符合仅剔除周日的需求,以下是修正后的可用方案:

对齐规则

  • 计数区间:起始日次日到结束日,包含两端日期
  • 排除规则:仅剔除区间内的周日,周六正常计入
  • 异常处理:结束日早于/等于起始日时返回0

可直接使用的Cognos表达式

CASE
WHEN cast([Finish] as date) <= cast([Start] as date) THEN 0
ELSE
-- 整周部分:每满7天计6天(仅扣除1个周日)
6 * (
    _days_between(cast([Finish] as date), cast([Start] as date) + 1)
    - _day_of_week(cast([Finish] as date), 1)
    + _day_of_week(cast([Start] as date) + 1, 1)
) / 7
-- 不满整周的零散天数计算
+ max(
    0,
    min(_day_of_week(cast([Finish] as date), 1), 6)
    - max(_day_of_week(cast([Start] as date) + 1, 1), 1)
    + 1
)
END

逻辑说明

  1. 先将计数起点统一调整为起始日次日,避免单独处理偏移逻辑
  2. _day_of_week使用参数1,返回值规则为:周一=1,周二=2……周六=6,周日=7
  3. 整周部分计算区间内的完整周数量,每完整周固定计6个有效天
  4. 零散天数计算时,将周日的返回值截断为6,自动过滤掉区间首尾的周日

验证示例

  • 示例1:起始日为周一,结束日为当周周五,计数区间为周二到周五无周日,返回有效天数4
  • 示例2:起始日为周六,结束日为下周一,计数区间为周日、周一,剔除周日后返回有效天数1
  • 示例3:起始日为周日,结束日为下周日,计数区间为周一到下周日,剔除1个周日返回有效天数6

内容的提问来源于stack exchange,提问作者SFillin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:27:02