我正在尝试查找从UNIX开始到UNIX结束的时间范围是否可用。我有以下数据:
id start end
1 1309383000 1309390200
2 1305115200 1305129600
3 1305374400 1305403200
我正在尝试运行一个查询,其中我有一个给定的开始和结束,并检查是否采取这种缓慢。但是,start
可以在另一个条目结束时开始。我尝试了很多不同的方法,无法让它正常工作。任何帮助表示赞赏。
我使用PHP来调用查询。但是,如果可能的话,我想在纯MySQL中进行。
答案 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子句来检索行。