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

如何实现Python+SQLite会议时间交集检测算法?

会议时间交集检测实现方案

核心逻辑:区间交集判断

两个时间区间存在交集的通用判断条件(假设会议时间为左闭右开区间,即[start, end)——比如10:00-11:00的会议覆盖10:00到10:59:59,11:00开始的会议可正常安排):

新会议的开始时间 < 已有会议的结束时间 并且 新会议的结束时间 > 已有会议的开始时间

只要数据库中存在满足该条件的会议,就说明时间冲突,无法插入新会议。

SQLite中的检测实现

假设你的会议表名为meetings,字段start_meeting和end_meeting均为存储分钟数的整数类型:

  1. 冲突检测查询
    针对新会议的new_start(如600)和new_end(如660),执行以下参数化SQL查询:

    SELECT 1 FROM meetings WHERE start_meeting < ? AND end_meeting > ? LIMIT 1;
    

    注意替换?的顺序:第一个?对应new_end,第二个?对应new_start。

  2. 判断与执行逻辑

    • 如果查询返回1条记录:说明存在时间冲突,拒绝插入新会议
    • 如果查询无返回结果:说明无冲突,执行插入操作:
      INSERT INTO meetings (start_meeting, end_meeting) VALUES (?, ?);
      

示例验证

用你提供的测试数据:

  • 新会议:600-660
  • 已有会议:
    • 530-630:满足600 < 630 AND 660 > 530,属于冲突
    • 540-600:600 < 600不成立,无冲突
    • 840-841:600 < 841成立,但660 > 840不成立,无冲突
      因此检测查询会返回530-630这条记录,新会议无法插入。

优化建议

  • 给时间字段添加索引,提升冲突检测的查询效率:
    CREATE INDEX idx_meeting_time_range ON meetings (start_meeting, end_meeting);
    
  • 将检测和插入操作放在同一个事务中,避免并发场景下的竞态冲突:
    BEGIN TRANSACTION;
    -- 执行冲突检测查询
    -- 若无冲突,执行INSERT
    COMMIT;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:25:19