时间的交集

伟洪winni 2017-08-07 07:58:21

$list = array(
array('name' => '节目一', 'start_time' => '2017-08-07 15:57:21', 'end_time' => '2017-08-07 16:59:00'),
array('name' => '节目二', 'start_time' => '2017-08-07 9:11:01', 'end_time' => '2017-08-07 20:01:06'),
array('name' => '节目三', 'start_time' => '2017-08-07 5:23:31', 'end_time' => '2017-08-07 16:59:00'),
array('name' => '节目四', 'start_time' => '2017-08-07 21:21:21', 'end_time' => '2017-08-07 22:59:11'),
array('name' => '节目五', 'start_time' => '2017-08-07 15:57:00', 'end_time' => '2017-08-07 16:59:00'),
array('name' => '节目六', 'start_time' => '2017-08-06 15:57:21', 'end_time' => '2017-08-06 16:59:00'),
);

数据库表有开始时间(start_time) 和 结束时间(end_time)


'find_start' => '2017-08-07 16:00:25', 'find_time' => '2017-08-07 16:17:30';
已知一个要查的时间段, 怎么查出与该时间有交集的所有数据?
...全文
211 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
伟洪winni 2017-08-21
  • 打赏
  • 举报
回复
伟洪winni 2017-08-18
  • 打赏
  • 举报
回复
伟洪winni 2017-08-09
  • 打赏
  • 举报
回复
引用 5 楼 zjcxc 的回复:
SET @find_start = '2017-08-07 16:00:25', @find_time = '2017-08-07 16:17:30'; SELECT * FROM tb WHERE start_time < @find_time AND end_time > @find_start; 如果也看不懂,那就没办法了
'find_start' => '2016-01-01 01:00:00', 'find_time' => '2018-01-01 01:00:00'; 如果要找的时间为上面这个, 就找不出有几个时间的交集(实际上是有的) 我新增的这个时间段每一秒在以保存在数据库中的时间段里是否包含超过5次?
zjcxc 2017-08-08
  • 打赏
  • 举报
回复
你自己理解错了吧? 区间的次,就是 start 在查询区间的结束时间点之前, 并且 end 在查询区间的开始时间之后 如果包含查询区间的边界值,那么使用 <= 和 >=,,否则用 < 和 >
伟洪winni 2017-08-08
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
start_time < '2017-08-07 16:17:30' and end_time > '2017-08-07 16:00:25'
'find_start' => '2016-01-01 01:00:00', 'find_time' => '2018-01-01 01:00:00'; 如果要找的时间为上面这个, 就找不出有几个时间的交集(实际上是有的)
ACMAIN_CHM 2017-08-08
  • 打赏
  • 举报
回复
start_time < '2017-08-07 16:17:30' and end_time > '2017-08-07 16:00:25'
zjcxc 2017-08-08
  • 打赏
  • 举报
回复
SET @find_start = '2017-08-07 16:00:25', @find_time = '2017-08-07 16:17:30'; SELECT * FROM tb WHERE start_time < @find_time AND end_time > @find_start; 如果也看不懂,那就没办法了
伟洪winni 2017-08-08
  • 打赏
  • 举报
回复
引用 3 楼 zjcxc 的回复:
你自己理解错了吧? 区间的次,就是 start 在查询区间的结束时间点之前, 并且 end 在查询区间的开始时间之后 如果包含查询区间的边界值,那么使用 <= 和 >=,,否则用 < 和 >
我的问题是 'find_start' => '2017-08-07 16:00:25', 'find_time' => '2017-08-07 16:17:30'; 已知一个要查的时间段, 怎么查出与该时间有交集的所有数据?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧