如何检查两个日期之间是否存在条目

我有一个 sql 表“航班”,其中包含所有航班的所有详细信息:飞机注册、到达日期、出发日期等等......现在当我想创建一个新航班时,我想检查一个航班在两个给定日期之间已经存在相同的注册。EG:有一个名为 IFLY 的航班,该航班于 2019 年 7 月 22 日抵达并于 2019 年 7 月 25 日起飞,现在如果我尝试创建具有相同注册但在 2019 年 7 月 23 日抵达并于 2019 年 7 月 24 日起飞的另一个航班,我会想检查数据库,在这些日期期间,另一个具有相同注册的航班已经在数据库中并提醒用户。


我尝试过这样的事情:html form via jquery/ajax call a request on the DB


$regist = $_POST['regCreate'];

$arrivalDate = $_POST['adof'];

$departureDate =$_POST['ddof'];


$sql = "SELECT reg FROM flights WHERE reg = '$regist' AND (adof or ddof) 

 >= '$arrivalDate' AND (adof or ddof) <= '$departureDate'  ";//

$data = mysqli_query($conn, $sql);


 if (mysqli_num_rows($data) > 0) {

  echo 'exists';

 }

此代码不起作用,因为如果我创建一个位于已创建的两个日期之间的新航班,则不会给我例外结果。


慕姐4208626
浏览 118回答 2
2回答

万千封印

如果两个时间段都在另一个结束之前开始,则两个时间段会重叠。您可以将其表述为:SELECT f.regFROM flights fWHERE f.reg = ? and&nbsp; &nbsp; &nbsp; f.departureDate < ? and&nbsp; -- the input arrival date&nbsp; &nbsp; &nbsp; f.arrivalDate > ?&nbsp; &nbsp; &nbsp; &nbsp; -- the input departure date请注意,我更改了语法以使用参数。这是在 PHP 或任何其他应用程序层中设计查询时的最佳实践。

小怪兽爱吃肉

我已经建立了这个解决方案$sql = "SELECT reg, adof, ddof FROM flights WHERE reg = '$regist' AND adof <&nbsp;'$arrivalDate' ";//&nbsp;$data = mysqli_query($conn, $sql);if (mysqli_num_rows($data) > 0) {&nbsp;foreach ($data as $key => $v) {&nbsp; if ($v['ddof'] >= $arrivalDate) {&nbsp; &nbsp;echo 'exists';&nbsp; &nbsp;}&nbsp; }&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP