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

如何计算Case CreatedDate与Case ClosedDate之间排除周末的工作日时长

计算两个日期间排除周末的工作日时长通用方案

核心逻辑

先计算两个日期的总间隔天数,减去区间内的周末天数得到工作日天数,再结合单日工作时长换算为总时长,需要精确到小时的场景可额外叠加首尾日期的非完整工作日时长差:

工作日天数 = 总间隔天数 + 1(需包含首尾日期时加上) - 周末天数
工作日时长 = 工作日天数 * 单日标准工作时长 + 首尾非完整工作日的时长差

周末天数计算规则:

  • 先算区间内的完整周数,每个完整周固定对应2天周末:完整周周末数 = FLOOR((结束日期 - 起始日期)/7) * 2
  • 再统计剩余不满一周的天数内包含的周六、周日数量,两者相加即为总周末天数

不同场景的具体实现公式

1. Excel / Google Sheets 场景

仅需统计工作日天数直接用内置函数:
=NETWORKDAYS(开始日期单元格, 结束日期单元格)

需精确到小时(假设单日工作时段为9:00-18:00,共9小时):
=NETWORKDAYS(开始日期, 结束日期) * 9 - MOD(开始日期,1)*24 + (18 - MOD(结束日期,1)*24)
注:结束日期落在非工作时段的情况可自行补充边界判断逻辑调整

2. SQL 场景(以MySQL为例)

计算工作日天数参考语句:

SELECT 
    DATEDIFF(ClosedDate, CreatedDate) + 1 
    - (WEEK(ClosedDate) - WEEK(CreatedDate)) * 2 
    - (WEEKDAY(CreatedDate) = 6) 
    - (WEEKDAY(ClosedDate) = 5) 
    AS work_days
FROM case_table;

3. 通用编程实现伪代码

# 此处默认周一周日对应值为0-6,可按所用语言的日期API规则调整周末判断条件
def calculate_work_hours(start_date, end_date, daily_work_hours=8):
    if start_date > end_date:
        return 0
    total_days = (end_date - start_date).days
    full_weeks = total_days // 7
    weekend_days = full_weeks * 2
    # 统计剩余不足7天的天数内的周末数量
    start_weekday = start_date.weekday()
    remaining_days = total_days % 7
    for i in range(remaining_days + 1):
        current_weekday = (start_weekday + i) % 7
        if current_weekday >= 5: # 周六对应5、周日对应6
            weekend_days +=1
    work_days = total_days + 1 - weekend_days
    return work_days * daily_work_hours

注:需要精确到小时的场景,可额外减去开始日期当天已过的工作时长、加上结束日期当天已过的工作时长即可


内容的提问来源于stack exchange,提问作者m.dinesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:03