我已经搜索过,因此也搜索了很多stackoverflow,但是搜索的越多,“?”我的脸突然冒出来,我必须承认我觉得自己无法将所有这些东西放在一起,所以我希望我在这里能很好地表达自己,以便希望能在这方面帮助我... ^ ^
因此,我想将用户输入的日期范围与存储在我的MYSQL DB中的日期范围进行比较,格式为“ 2019-02-02 00:00:00”。是的,数据库中的所有日期都设置为午夜。
来自前端的daterange在php端进行了格式化,类似于此结构。因此,我从前端获取了时间戳并将其放入date()函数中:
date("Y-m-d 00:00:00", $timestamp)
现在,稍后我是一个SQL查询,通过该查询确定两个日期范围之间是否存在重叠,它看起来像这样:
$result = $connection->query("SELECT id
FROM reservierung
WHERE status != 'abgelehnt'
AND benutzer != $benutzerID
AND arbeitsplatz = $arbeitsplatzID
AND $formattedStartDate <= ende
AND $formattedEndDate >= anfang
");
然后我像这样评估查询:
$queryResult = $result->rowCount();
但是php抛出错误,因为查询失败并返回布尔值false。因此,我得出结论,日期比较肯定出了点问题,因为如果删除它,查询将成功。
我知道MYSQL只存储字符串(至少我们的数据库肯定存储了字符串),但是我不知道我的日期是什么(字符串?对象?),我也不知道我需要将什么转换成什么这种比较发生xD 我通常总是提取日期并在查询之外进行比较,但这要“冗长”得多,如果知道如何在mysql内部进行比较,则可能不必要。 我已经读过有关DATE_FORMAT()的内容,并且比较时间戳而不是日期也可以,但是我不知道哪种方法会更有效(就生成更少和更好的结构化代码而言),而且我也不知道需要什么可以在mysql查询内部使比较仅在功能/语法级别上起作用... ^^
编辑:这是php错误,仅供参考:
[Thu Feb 07 15:29:04.739350 2019] [:error] [pid 20986] [client 127.0.0.1:47518] PHP致命错误:未捕获错误:在/ var中的布尔值上调用成员函数rowCount() /www/html/include/Buchen.php:76\n堆栈跟踪:\ n#0 /var/www/html/include/Buchen.php(199):checkQueryResult(false)\ n#1 / var / www / html /include/Buchen.php(149):ReservationConflictsWithAlreadyExistingReservationByUser(Object(PDO),'2019-02-07','2019-02-28','66','145',Array)\ n#2 / var / www / html / include / Buchen.php(24):checkForValidityOfReservationTimeframe(Object(PDO),Array,'DEI3','2','66','145')\ n#3 / var / www / html / include / Buchen.php(11):大型机('1549494000','1551308400','2','DEI3','Andreas','Lang',NULL)\ n#4 {main} \ n放在/ var / www / html / include / Buchen.php,第76行,引荐网址:http://localhost/view/reservieren.php