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

SQL时间区间匹配:按表B时间区间拆分表A重叠时间段

时间区间重叠拆分SQL实现方案

实现逻辑

两个时间区间存在有效重叠的标准判断条件为:B.StartTime < A.EndTime AND B.EndTime > A.StartTime,满足该条件时,重叠区间的取值规则为:

  • 重叠起始时间:取A、B两个区间起始时间的较大值
  • 重叠结束时间:取A、B两个区间结束时间的较小值

按照上述规则计算即可直接得到符合需求的拆分结果。

实现代码

以下为适配SQL Server(匹配你提供的临时表语法)的实现代码:

SELECT
    IIF(A.StartTime > B.StartTime, A.StartTime, B.StartTime) AS StartTime,
    IIF(A.EndTime < B.EndTime, A.EndTime, B.EndTime) AS EndTime
FROM #A A
INNER JOIN #B B
    ON B.StartTime < A.EndTime 
    AND B.EndTime > A.StartTime

兼容多数据库的通用写法(支持GREATEST/LEAST函数的数据库如MySQL、PostgreSQL等可直接使用):

SELECT
    GREATEST(A.StartTime, B.StartTime) AS StartTime,
    LEAST(A.EndTime, B.EndTime) AS EndTime
FROM A
JOIN B ON B.StartTime < A.EndTime AND B.EndTime > A.StartTime

输出结果

执行上述代码后将得到你预期的两条重叠区间:

StartTimeEndTime
2021-01-01 07:15:002021-01-01 07:32:00
2021-01-01 07:45:002021-01-01 09:15:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:05