在MySQL中查找可用的时间范围

时间:2011-06-29 16:01:41

标签: php mysql

我正在尝试查找从UNIX开始到UNIX结束的时间范围是否可用。我有以下数据:

id start      end
1  1309383000 1309390200
2  1305115200 1305129600
3  1305374400 1305403200

我正在尝试运行一个查询,其中我有一个给定的开始和结束,并检查是否采取这种缓慢。但是,start可以在另一个条目结束时开始。我尝试了很多不同的方法,无法让它正常工作。任何帮助表示赞赏。

我使用PHP来调用查询。但是,如果可能的话,我想在纯MySQL中进行。

3 个答案:

答案 0 :(得分:1)

select  if(max(end) >= $end, max(end), $end) - 
        if(min(start) <= $start, min(start), $start) - 
        if(sum(end - start) is null, 0, sum(end - start))  as FreeTime
where end > $start and start < $end

答案 1 :(得分:0)

SELECT count(*)
FROM timeslots
WHERE ($your_start NOT BETWEEEN start AND end) AND
   ($your_end NOT BETWEEN start and end)

如果返回计数&gt; 0,然后至少部分地获取所请求的时隙。

答案 2 :(得分:0)

将1个单位添加到startTime并从endTime中减去1个单位,然后使用between子句来检索行。