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

DateTime三日期重叠冲突检测如何排除边界点误报问题

时段冲突检测边界误报解决方案

问题根源

你当前使用的是左右双闭区间的重叠判定逻辑,默认时间块的结束时间点属于该时间块的覆盖范围,才会出现边界点重合被判定为重叠的误报。你的业务场景下,边界点的重合不属于有效冲突,本质是需要把时间块定义为左闭右开区间:即时间块[start, end)仅覆盖大于等于start、小于end的时间点,end点本身不属于该时间块。

调整方案

1. 双时段重叠判定逻辑修改

把原有判定代码:

Datestart <= @DateEndToTest AND DateEnd >= @DateStartToTest 

修改为:

Datestart < @DateEndToTest AND DateEnd > @DateStartToTest 

2. 逻辑验证(以你给出的示例为例)

三个时间块按左闭右开定义后为:

  • B1:[2021-12-24 00:00:00, 2021-12-25 00:00:00)
  • B2:[2021-12-25 00:00:00, 2021-12-26 00:00:00)
  • B3:[2021-12-24 00:00:00, 2021-12-26 00:00:00)
    边界点2021-12-25 00:00:00仅属于B2、B3的覆盖范围,B1的覆盖范围不包含该点,同时共存的时间块数量为2,不会触发超过2的报警要求。

3. 多时段批量检测优化(可选)

如果需要批量检测所有时间点的共存数量,推荐使用扫描线算法,从根源避免边界误报:

  1. 把所有时间块的start事件标记为+1,end事件标记为-1
  2. 所有事件按时间戳排序,相同时间戳的end事件排在start事件之前
  3. 遍历事件累加计数,累加过程中数值峰值超过2的区间即为需要上报的冲突区间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:54:03