Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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 确定日期范围是否在另一个日期范围内满_Php_Mysql_Date - Fatal编程技术网

Php 确定日期范围是否在另一个日期范围内满

Php 确定日期范围是否在另一个日期范围内满,php,mysql,date,Php,Mysql,Date,正在寻找一些帮助,因为已经为此奋斗了一段时间 我有一个日期范围表: "time_from" 2013-06-03 00:00:00, "time_till" 2013-07-03 00:00:00 "time_from" 2013-05-03 00:00:00, "time_till" 2013-06-03 00:00:00 然后我有一个表格,你可以提交一个新的日期范围 提交此表单时,我希望检查新日期范围的任何部分是否与当前任何现有日期范围的任何部分冲突 任何人都可以帮忙,我不担心这是在MyS

正在寻找一些帮助,因为已经为此奋斗了一段时间

我有一个日期范围表:

"time_from" 2013-06-03 00:00:00, "time_till" 2013-07-03 00:00:00
"time_from" 2013-05-03 00:00:00, "time_till" 2013-06-03 00:00:00
然后我有一个表格,你可以提交一个新的日期范围

提交此表单时,我希望检查新日期范围的任何部分是否与当前任何现有日期范围的任何部分冲突

任何人都可以帮忙,我不担心这是在
MySQL
还是
PHP
中完成的


谢谢

您可以通过sql检查该行是否存在相同的范围

select if(count(*) >0,'conflicts', 'does not conflict')
from yourTable
where ($startTime between time_from and time_till)
or ($endTime between time_from and time_till)

如果任何输入日期位于现有日期范围内,它将显示冲突,否则它将导致不冲突

您可以通过mysql查询轻松实现这一点

select * from table where
$variable_start BETWEEN time_from AND time_till OR $variable_end BETWEEN time_from AND time_till

如果您的时间在日期范围内,您将有行

假设在范围内意味着存在冲突

您需要检查每一行:

您的日期范围开始不在当前日期范围开始之前,日期范围结束不在当前日期范围开始之后

您的日期范围开始不在当前日期范围开始之前,日期范围结束不在当前日期范围结束之后

您的日期范围开始日期不在当前日期范围结束日期之前,日期范围结束日期不在当前日期范围开始日期之后


您的日期范围开始不在当前日期范围开始之后,日期范围结束不在当前日期范围结束之前。PHP的
strotime()
可以帮助您:这将只检查开始日期和结束日期是否冲突。它不会检查日期之间是否存在任何时间冲突?将查询更改为检查范围之间是否存在冲突。如果我假设您正在比较单个日期范围,则显示此操作是否适用于将日期范围与日期范围进行比较?