Php 在两个日期之间进行选择

Php 在两个日期之间进行选择,php,mysql,date,between,Php,Mysql,Date,Between,我有一个非常简单的SQL,这让我发疯。 我在租车公司工作,所以有FromDate和ToDate(预订的汽车) 我的MySQL厕所是这样的: id | FromDate | ToDate ----------------------- 24 | 01.10.2020 | 31.10.2020 因此,如果用户在这两个日期之间选择一个日期,他应该会收到一条消息,表明车辆已经预订。到目前为止,我所尝试的: SELECT id FROM booked_cars WHERE ($fromdate BETW

我有一个非常简单的SQL,这让我发疯。 我在租车公司工作,所以有FromDate和ToDate(预订的汽车)

我的MySQL厕所是这样的:

id | FromDate | ToDate
-----------------------
24 | 01.10.2020 | 31.10.2020
因此,如果用户在这两个日期之间选择一个日期,他应该会收到一条消息,表明车辆已经预订。到目前为止,我所尝试的:

SELECT id FROM booked_cars WHERE ($fromdate BETWEEN date(FromDate) AND date(ToDate)) AND vhId = $vhid
SELECT id FROM booked_cars WHERE ($fromdate BETWEEN date(FromDate) AND date(ToDate) AND $todate BETWEEN date(FromDate) AND date(ToDate)) AND vhId = $vhid
SELECT id FROM booked_cars WHERE (date(FromDate) BETWEEN $fromdate AND $todate) AND vhId = $vhid
我的$fromdate、$todate和$vhid随附了一个POST表单。 这些值是

$fromdate = 03.10.2020
$todate = 07.10.2020
$vhid = 24
不管我怎么做,我的$statement->rowCount()总是为零

我正在使用PDO和准备好的语句。我只是为了更好的阅读而写的

$statement = $pdo->prepare("SELECT id FROM booked_cars WHERE (:fromdate BETWEEN date(FromDate) AND date(ToDate)) AND vhId = :vhid");
$statement->execute(array('fromdate' => $fromdate, 'vhid' => $vhid));
echo $statement->rowCount(); // Alway 0 with BETWEEN (when i select just the vhid, i got the result)
您需要在这里使用,数据库中保存的日期很可能具有
YYYY-mm-dd
格式

$statement = $pdo->prepare("SELECT `id` FROM `booked_cars` WHERE `vhId` = :vhid AND STR_TO_DATE(:fromdate,'%d.%m.%Y') BETWEEN `FromDate` AND `ToDate`;");
如果字段
FromDate
ToDate
类型为
DATETIME

$statement = $pdo->prepare("SELECT `id` FROM `booked_cars` WHERE `vhId` = :vhid AND STR_TO_DATE(:fromdate,'%d.%m.%Y') BETWEEN DATE(`FromDate`) AND DATE(`ToDate`);");

上述查询与本文中使用的查询类似。

这是否回答了您的问题?不,没有。因为我的第二个日期不在第一个@james之前,FromDate和ToDate字段的格式是什么?它们是datetime吗?试试下一个:
$statement=$pdo->prepare(“从'booked_cars'中选择'id',其中'id`={$vhid}和('fromdate`和'{$todate}'之间的'{$fromdate}'或'{$fromdate}'和'{$todate}'之间的'{$fromdate}'))
谢谢你,彼得。这样我得到了一个结果。但当我选择的日期不在f.e.01.11.2020-05.11.2020范围内时,我甚至得到了一个结果。有什么建议吗?在试图弄清楚如何在PHP中执行查询之前,请在MySQL控制台中手动编写查询并使其正常工作。然后,您就可以了解如何在PHP内部实现它。在这种情况下,您只需在查询中提供“fromDate”,还需要使用“toDate”