如何检查时间段是否已存在或数据库中的特定时间段之间?

时间:2015-01-29 09:11:55

标签: mysql sql

我的php中有这个查询。我需要做的是。我有例子。

上午8:30至上午10:00。所以我希望这次检查开始和时间结束是否已经存在于数据库中,或者它是否在一段时间内。

  

输入:上午8:30至上午10:00 ==数据库:上午8:30至上午10:00。 - >已经   存在

     

输入:上午8:30至11:30 ==数据库:上午8:30至上午10:00。 - >已经   

之间存在      

输入:上午9:30至11:30 ==数据库:上午8:30至上午10:00。 - >已经   

之间存在      

输入:上午7:00至11:30 ==数据库:上午8:30至上午10:00。 - >已经   

之间存在      

输入:上午7:00至上午10:00 ==数据库:上午8:30至上午10:00。 - >已经   

之间存在      

输入:上午7:00至上午9:30 ==数据库:上午8:30至上午10:00。 - >已经   

之间存在

下面的代码有效,但如果时间开始或时间结束在现有的时间段之间......它仍然会继续,并且不会告诉我它已经存在于一段时间之间。我不知道我缺少什么。谢谢!

SELECT  * 
FROM room_schedules 
INNER JOIN rooms
ON room_schedules.Room_ID = rooms.Room_ID
WHERE
(
    (
        '[Start]' BETWEEN room_schedules.Starts AND room_schedules.Ends
    ) AND (
        '[End]' BETWEEN room_schedules.Starts AND room_schedules.Ends
    )
) OR (
    (
        room_schedules.Starts BETWEEN '[Start]' AND '[End]'
    ) AND (
        room_schedules.Ends BETWEEN '[Start]' AND '[End]'
    )
)

1 个答案:

答案 0 :(得分:0)

只需使用COUNT(*)即可。它会为您提供结果的总行数。像这样:

SELECT  COUNT(*) 
FROM room_schedules 
INNER JOIN rooms
ON room_schedules.Room_ID = rooms.Room_ID
WHERE
room_schedules.Starts BETWEEN '07:00:00' AND '10:00:00'
 AND 
room_schedules.Ends BETWEEN '10:00:00' AND '12:00:00'

然后在你的php中,你只需要检查结果,例如:

$total = /* get from query */
if($total > 0)
    echo $total.' results';
else
    echo 'Data Not Exist';