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

Oracle中结合预定义可预约时段与忙碌时间查询可用时间区间的问题

可预约时段筛选实现方案

核心重叠判断逻辑

判断两个时间区间是否存在重叠的通用规则(适用于所有非边界对齐场景):

时段A开始时间 < 时段B结束时间 且 时段A结束时间 > 时段B开始时间
只要可预约时段和任意忙碌时段满足上述条件,就说明存在重叠,该时段需标记为不可用,无需额外处理边界对齐问题。

Oracle 实现代码

方案1:直接查询完全可用的时段(推荐,执行效率高)

使用NOT EXISTS直接过滤所有存在重叠的可预约时段:

SELECT s.ID, s.SLOT_BEG, s.SLOT_END
FROM slots s
WHERE NOT EXISTS (
    SELECT 1 
    FROM meetings m
    WHERE s.SLOT_BEG < m.MEET_END 
      AND s.SLOT_END > m.MEET_BEG
);

方案2:查询所有时段并标记可用状态

如果需要同时输出所有时段的可用/不可用状态,可使用左关联实现:

SELECT 
    s.ID,
    s.SLOT_BEG,
    s.SLOT_END,
    CASE WHEN MAX(m.ID) IS NULL THEN '可用' ELSE '不可用' END AS AVAILABLE_STATUS
FROM slots s
LEFT JOIN meetings m
    ON s.SLOT_BEG < m.MEET_END
    AND s.SLOT_END > m.MEET_BEG
GROUP BY s.ID, s.SLOT_BEG, s.SLOT_END;

效果说明

该逻辑自动覆盖非边界对齐的重叠场景:例如9:20-9:40的会议,会同时匹配9:15-9:30、9:30-9:45两个15分钟粒度的可预约时段,两个时段都会被标记为不可用,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:27:07