百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文
SQL时间重叠_sql两个时间字段差

SQL时间重叠_sql两个时间字段差

  • 网站名称:SQL时间重叠_sql两个时间字段差
  • 网站分类:技术文章
  • 收录时间:2025-09-04 00:22
  • 网站地址:

进入网站

“SQL时间重叠_sql两个时间字段差” 网站介绍

问题描述时间重叠指上下两行数据的时间段有重叠部分,现在要找出这些在时间上有重叠的记录。

具体问题有7个会议室,每个会议室每天都有人开会,某一天的开会时间如下:查询出开会时间有重叠的是哪几个会议室?上面预期结果是 ID 2 3 4 5 6

问题分析为了方便分析,我们画了如下一个草图来具体描述。图中上面部分t和下面部分b有一段是重复的,分别是b.starttime到t.endtime部分。通过数学集合的思想,我们可以得出这个重叠部分的集合关系。t.starttime<=b.endtimeAND t.endtime>=b.starttime上面这个数学集合的重叠部分就是我们要的找的。

具体解法

--创建测试数据

WITH Meeting AS(

SELECT1ID,'08:00' Starttime,'09:15' Endtime

UNION ALL

SELECT2,'13:20','15:20'

UNION ALL

SELECT3,'10:00','14:00'

UNION ALL

SELECT4,'13:55','16:25'

UNION ALL

SELECT5,'14:00','17:45'

UNION ALL

SELECT6,'14:05','17:45'

UNION ALL

SELECT7,'18:05','19:45')


--查询代码

SELECTDISTINCT b.* FROM Meeting t

JOIN Meeting b ON

t.Starttime<=b.Endtime

AND t.Endtime>=b.Starttime

AND b.ID <> t.ID --排除与自身时间相等的值


结果如下: