Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MySQL中查找可用的时间范围_Php_Mysql - Fatal编程技术网

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

Php 在MySQL中查找可用的时间范围,php,mysql,Php,Mysql,我试图找出从UNIX开始到UNIX结束的时间范围是否可用。我有如下数据: id start end 1 1309383000 1309390200 2 1305115200 1305129600 3 1305374400 1305403200 我试图运行一个查询,其中我有一个给定的开始和结束,并检查是否采取了这种缓慢。但是,start可以在另一个条目结束时启动。我尝试了很多不同的方法,但都不能让它正常工作。感谢您的帮助 我正在使用PHP调用查询。但是,如果可能的话,我想在纯My

我试图找出从UNIX开始到UNIX结束的时间范围是否可用。我有如下数据:

id start      end
1  1309383000 1309390200
2  1305115200 1305129600
3  1305374400 1305403200
我试图运行一个查询,其中我有一个给定的开始和结束,并检查是否采取了这种缓慢。但是,
start
可以在另一个条目结束时启动。我尝试了很多不同的方法,但都不能让它正常工作。感谢您的帮助

我正在使用PHP调用查询。但是,如果可能的话,我想在纯MySQL中实现它

SELECT count(*)
FROM timeslots
WHERE ($your_start NOT BETWEEEN start AND end) AND
   ($your_end NOT BETWEEN start and end)
如果返回的计数大于0,则请求的时隙至少部分占用。

选择If(max(end)>=$end,max(end),$end)-
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
如果(最小(开始)$开始和开始<$结束
向startTime添加1个单位,从endTime中减去1个单位,然后使用between子句来检索行。

基本上你是在寻找重叠时间吗?查看between/NOT between sql运算符我对这些操作进行了很多测试,结果非常接近,但始终无法正常工作。尝试发布你的“closer”查询你是什么意思?我没有运行另一个查询这似乎总是会返回一些东西是的,它会,因为你在进行计数。它总是会返回一个数字。你必须检索该数字。如果它是0,则时间段可用。否则它正在使用中。嗯……否则我今天就死定了。我想我的逻辑颠倒了。试着做just'between',而不是'notbetween'。这将使0=可用,非0=不可用。它似乎不起作用。我在一个开始前1小时放置了一个2小时的槽位,它返回0。然后我在一个结束时放置它,它返回1。它有点起作用,但我得到了很多奇怪的数字,我不太确定如何处理它们。有时是一堆0,一些乘以它只是一个0,而那0表示它被占用了,但那一堆0表示它没有被占用。有时我什么也得不到,这意味着它没有被占用。你知道吗?它应该有一行作为一个值,你获得了更多吗?见我最后的更正。null或cero mings“no free time”其他数字是时间范围内的空闲秒数。发布你的测试(和数据集)下面是我尝试的方法,在您刚才所做的任何更改之前使用您的查询。基本上,我只是检查一个时间跨度之间的可用性,但可以在另一个时间跨度结束时启动。这是我的代码正常工作所必需的:但可以在另一个时间跨度结束时启动