SQL检查时间是否可用

时间:2015-12-28 16:34:26

标签: mysql datetime between

我正在尝试编写一个允许用户预订项目的系统。 物品不能预订两次。因此,如果某个项目不可用,我想通过使用SQL来了解它。

我有一个包含以下字段的数据库 id,item,start(datetime),end(datetime)

用户将尝试从“01-01-2016 09:00”到“01-01-2016-22:00”预订项目。但是已经有一行开始是“01-01-2016 11:00”,结束是“01-01-2016 16:00”。所以..该项目不可用。

我如何在SQL中执行此操作?

现在我正在使用它:

SELECT * FROM `items` WHERE (`start` between '$start' and '$end') AND (`item` = $id)

然后我查看行数是否高于0.如果是,则该项目不可用。这可行..但不是在开始时间早于新的开始时间之前。

我希望我的解释很明确......很难处理这个问题,因为我无法直接了解事实。

1 个答案:

答案 0 :(得分:0)

实际上,start可能在新的开始时间之前。但是你还要检查end是否也在间隔期间。同样对于评论案例,您必须检查是否存在较小的间隔。 按照以下方式展开您的查询:

SELECT * FROM `items` WHERE ((`start` between '$start' and '$end') OR (`end` between '$start' and '$end') OR (`start` >= '$start' and `end` <=  '$end')) AND (`item` = $id)