我正在设计一个汽车预订系统,我正在尝试编写一个查询,检查汽车是否可用。我希望查询用英语做的是检查存储在变量$ 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字段设置为datetime,格式为 - 2012-03-02 00:00:00等。
你能帮我识别问题并修改sql查询吗?
如果您需要任何其他代码/信息,请与我们联系。
谢谢!
答案 0 :(得分:1)
试试:
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'