MySQL:获取连续时间的开始和结束时间

时间:2015-02-10 20:45:39

标签: mysql timespan

我有一个连续时间和日期的表格。

ID  date        begin_time  end_time
1   05-02-15    19:00:00    19:05:00
2   05-02-15    19:05:00    19:10:00
3   05-02-15    19:10:00    19:15:00
4   05-02-15    19:15:00    19:20:00
5   05-02-15    19:20:00    19:25:00
6   05-02-15    19:25:00    19:30:00
7   05-02-15    19:30:00    19:35:00
8   05-02-15    19:35:00    19:40:00
9   06-02-15    19:00:00    19:05:00
10  06-02-15    19:05:00    19:10:00
11  06-02-15    19:10:00    19:15:00
12          
13          
14  06-02-15    19:25:00    19:30:00
15  06-02-15    19:30:00    19:35:00
16  06-02-15    19:35:00    19:40:00

http://sqlfiddle.com/#!2/54d9f6

正如您在05-02-15所见,从19:00到19:40的时间是连续的

正如您在06-02-15所见,从19:00到19:15的时间是连续的

正如您在06-02-15所见,从19:25到19:40的时间是连续的

开始时间和结束时间总是有5分钟差异。

我希望在begin_time和end_time中拥有所有不同的日期。因此上表的结果将是:

date        begin_time  end_time
05-02-15    19:00:00    19:40:00
06-02-15    19:00:00    19:15:00
06-02-15    19:25:00    19:40:00

方法的想法

获取所有连续部分的第一步是通过此查询完成的,但区别在于此查询中选择了所有不同的日期:

set @x=15;
select distinct t1.date
from
    `agenda_specialists` as t1 join
    `agenda_specialists` as t2 on
        t2.date=t1.date and
        t2.begin>=t1.begin and
        t2.begin<addtime(t1.begin,sec_to_time(@x*60))
group by t1.id
having count(*)=@x/5

这个问题取自MySQL: a timespan available within consecutive times,需要检索几乎相似的数据。虽然在这种情况下我们不需要特定的@x值。

0 个答案:

没有答案