Как сравнить эти даты в MYSQL? - PullRequest
0 голосов
/ 07 февраля 2019

Я уже погуглил и, таким образом, также много раз искал stackoverflow по этому вопросу, но чем больше я искал, тем больше "?"вспыхнуло у меня на лице, и я должен признать, что чувствую, что не могу собрать все эти вещи самостоятельно, поэтому я надеюсь, что смогу сформулировать себя здесь достаточно хорошо, чтобы вы могли надеяться помочь мне в этом ... ^^

Итак, я хочу сравнить диапазоны данных, введенные пользователем, с диапазонами дат, хранящимися в моей базе данных MYSQL в формате «2019-02-02 00:00:00».Да, все даты в БД установлены на полночь.

Диапазон дат, исходящий из внешнего интерфейса, был отформатирован на стороне 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, только FYI:

[Чт Фев 0715: 29: 04.739350 2019] [: error] [pid 20986] [client 127.0.0.1:47518] Неустранимая ошибка PHP: необработанная ошибка: вызов функции-члена rowCount () для логического значения в / var / 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): bookingConflictsWithAlreadyExistingReservationByUser (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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...