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

时间:2012-03-11 15:29:42

标签: php mysql datetime

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

如果您需要任何其他代码/信息,请与我们联系。

谢谢!

1 个答案:

答案 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'