检查重叠的开始结束时间,MySQL

时间:2010-10-23 17:34:07

标签: mysql time

我坚持这一点,需要一些帮助。

SELECT COUNT(id) AS counter  
  FROM time_reporter  
 WHERE user_id='$user_id' 
   AND actual_date = '$date' 
   AND  ((start_time > '$start_time' AND end_time < '$end_time'))

如果在范围内检查确定,但我需要确定是否有记录开始,结束时间,因此无法插入下一条记录...

如果一条记录有end_time示例22:30,则下一条记录不能有start_time 22:15等... 所以有了这个我不能得到的是... ...

因此,下一条记录不会在同一天内由同一用户重叠或干扰任何现有的时间段...... 也很高兴获得可用的时间范围(空闲时间段)将是我的第二个问题...

提前谢谢

任何帮助表示赞赏 谢谢

2 个答案:

答案 0 :(得分:0)

 SELECT COUNT(id) AS counter FROM time_reporter WHERE user_id='$user_id' AND actual_date = '$date' AND ((start_time > '$start_time' AND end_time < '$end_time') OR (end_time > '$start_time' AND end_time < '$end_time'))

我认为找到了一个解决方案,上面的代码阻止了start_time,end_time重叠......

eaxmple

22:00 22:15

22:15 23:15

但这又错了...... 23:00 23:45

可能会有一些改进,使其成为防弹......

答案 1 :(得分:0)

尝试此查询以在mysql上查找重叠任务时间

SELECT * FROM your_table Where (('2014-02-05 20:00:00' <= end_time and '2014-02-05 20:00:00' > start_time) OR (IF(('2014-02-05 08:00:00' < end_time),IF('2014-02-05 08:00:00'>=start_time,false,IF('2014-02-05 20:00:00'>start_time,true,false)) ,false)) OR ('2014-02-05 08:00:00' =start_time and '2014-02-05 20:00:00'=end_time)) and user_id =116