查询以通过比较日期时间来检查预订可用性


Query to check booking availability by comparing datetimes

我正在设计一个汽车预订系统,并试图编写一个查询来检查是否有汽车可用。我希望查询用英语做的是检查存储在变量$mysql_startdate和$mysql_enddate中的所选开始雇佣和结束雇佣是否与任何现有预订重叠。

我已经检查了查询中的变量是否具有它们应该具有的值,所以我猜我的语法有问题,很可能是最后一部分。

日期时间变量的格式:

$mysql_startdate=2012-03-22 00:00$mysql_enddate=2012-03-23 00:00

我没有从mysql_error中得到任何错误,问题是即使请求了可用的汽车,也不会显示任何结果。

$query = "SELECT c.*,b.startHire,b.endHire FROM cars c JOIN bookings b WHERE c.currentBranch = '$pickUpLocation' AND NOT (b.startHire > '$mysql_enddate' OR b.endHire < '$mysql_startdate')";

数据库中的startHire和endHire字段设置为日期时间,格式为2012-03-02 00:00:00等。

你能帮我找出问题并修改sql查询吗?

如果您需要任何进一步的代码/信息,请告诉我。

谢谢!

试试看:

SELECT c.*, b.startHire, b.endHire 
FROM cars c JOIN bookings b 
WHERE c.currentBranch = '$pickUpLocation' 
AND NOT b.startHire between '$mysql_startdate' and '$mysql_enddate'
and not b.endHire between '$mysql_startdate' and '$mysql_enddate'