Сравнение даты и времени, возвращающее неверные результаты в MySQL - PullRequest
0 голосов
/ 03 января 2019

Я столкнулся с необычной проблемой, когда следующий запрос mysql возвращает противоречивые результаты, и я пытаюсь выяснить, почему.Я уже нашел рабочий запрос, но мне хотелось бы понять, почему этот запрос не работал должным образом:

SELECT id, ExpiryDate
FROM sites
WHERE ExpiryDate >= '2018-12-24 00:00:00' 
  AND ExpiryDate <= '2019-01-01 00:00:00'

Это следующие тесты, которые я провел для сравнения:

  • MySQL через оболочку = правильные результаты

  • MySQL Workbench = правильные результаты

  • DBeaver = неверные результаты

  • Консоль PHPStorm SQL = неверные результаты

  • Скрипт PHP 7.0 = неверные результаты

Ожидаемые результаты, очевидно, будут записямигде ExpiryDate находится между двумя указанными датами.Однако в тех случаях, когда результаты возвращались неверно, мы получали записи с датами до 24 декабря 2018 года.

Я изменил запрос на следующий, который работает:

SELECT id, ExpiryDate
FROM sites
WHERE UNIX_TIMESTAMP(ExpiryDate) 
   BETWEEN UNIX_TIMESTAMP('2018-12-24 00:00:00') 
   AND UNIX_TIMESTAMP('2019-01-01 00:00:00')

Iмне интересно понять, почему первый запрос дал неверные результаты?Это ошибка PHP, MySQL или что-то я делаю неправильно?Запуск MySQL 5.6 и PHP 7.0.PHP работает через расширение MySQL.Я уже подтвердил эту проблему на нескольких машинах и подтвердил, что все работают с одними и теми же данными базы данных.Поле ExpiryDate является полем даты и времени.

Спасибо за понимание.

...