Php 如何在2个datetimes列之间检测事件搜索
我在DB上保存了一个事件列表。我想使用querys检测事件是否可以保存 有一个包含3个字段的表单:Php 如何在2个datetimes列之间检测事件搜索,php,mysql,Php,Mysql,我在DB上保存了一个事件列表。我想使用querys检测事件是否可以保存 有一个包含3个字段的表单: 项目 起始日期 结束日期 当用户单击“保存”时。系统必须检查事件在时间范围内是否可用 以下是一个例子: 例如,如果我想预订从“2013年9月9日15:00:00”开始到“2013年9月9日17:00:00”结束的活动(持续时间为2小时)。无法执行此操作,因为存在具有开始时间2013年9月9日14:00:00的上一个事件(id=18)。但我不知道该怎么问。我有一个使用between的查询,但没
- 项目
- 起始日期
- 结束日期
例如,如果我想预订从“2013年9月9日15:00:00”开始到“2013年9月9日17:00:00”结束的活动(持续时间为2小时)。无法执行此操作,因为存在具有开始时间2013年9月9日14:00:00的上一个事件(id=18)。但我不知道该怎么问。我有一个使用between的查询,但没有成功。您可以通过询问DB在这两个日期之间是否有任何事件来轻松完成此查询。差不多
SELECT * FROM EVENTS WHERE EVENT_DATE BETWEEN STARTDATE AND ENDDATE
如果查询返回结果,您就知道无法接受新事件
这是不明确的,因为您没有指定您拥有的数据库字段等。试试这个
SELECT * FROM reservaciones
WHERE '2013-09-09 20:00:10' BETWEEN FechaStart AND FechaEnd
OR '2013-09-09 21:00:00' BETWEEN FechaStart And FechaEnd
从Reservacions中选择*
其中“2013-09-09 20:00:10”位于FechaStart和FechaEnd之间
或者“2013-09-09 21:00:00”
如果有一排,那就意味着不可能从那个时候开始预订
解释
有两种情况可确定提交的事件是否与另一个事件重叠
^********************^ <-- another event
^*********************^ <-- current event
- 第一种情况是提交的事件的开始日期时间与另一个事件重叠
^********************^ <-- another event ^*********************^ <-- current event
^***************^以下查询告诉您是否存在影响该期间的任何现有预订:
SELECT * FROM reservaciones WHERE FechaEnd >= '2013-09-09 14:00:00' AND FechaStart <= '2013-09-09 18:00:00';
选择* 来自reservaciones 其中FechaEnd>=“2013-09-09 14:00:00”和 费恰斯塔特
SELECT * FROM reservaciones WHERE FechaEnd >= '2013-09-09 14:00:00' AND FechaStart <= '2013-09-09 18:00:00';