Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 如何在2个datetimes列之间检测事件搜索_Php_Mysql - Fatal编程技术网

Php 如何在2个datetimes列之间检测事件搜索

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的查询,但没

我在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的查询,但没有成功。

您可以通过询问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';