我正在设计一个汽车预订系统,并试图编写一个查询来检查是否有汽车可用。我希望查询用英语做的是检查存储在变量$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'