我正在为我的学校创建一个设备预留(PHP / MySQL)。
我的数据库如下所示:
tblEvents:
id
start
end
equipID
tblEquipment:
id
name
description
我想知道根据用户的时间参数查询数据库的最佳方法,以查看某个项目是否“不可用”。
例如,如果我有以下数据:
tblEvents:
id start end equipID
1 1251312300 1251324000 1
并且用户提交查询,查看“equipID”1是否可用,并且他们放了:
1251300300作为他们的开始,1251524000作为他们的结束。
任何有关启动此功能的帮助都会很棒。谢谢。
答案 0 :(得分:1)
我对此并不是100%肯定,但我认为这个查询应该非常接近:
select * from tblEvents
where (@starttime >= start && @starttime <= end) /* Starts while someone else has it */
or (@endtime >= start && @endtime <= end) /* Ends while someone else has it */
or (@startime <= start && @endtime >= end) /* Starts before & ends after someone else has it*/
and equipID = @equipID
替换@starttime,@ endtime&amp; @equipID与相应的设备ID和启动&amp;用户输入的结束时间。如果此查询未返回任何结果,则应该没有时间冲突。
基本上它正在检查这三种情况,其中*是你的开始&amp;结束时间, - 是未使用的时间,和|是时候被其他人使用了:
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------
答案 1 :(得分:0)
SELECT * FROM tblEvents
WHERE NOW() > FROM_UNIXTIME(end)