Я столкнулся с необычной проблемой, когда следующий запрос mysql возвращает противоречивые результаты, и я пытаюсь выяснить, почему. Я уже нашел рабочий запрос, но я хотел бы понять, почему этот запрос не работает должным образом:
SELECT id, ExpiryDate
FROM sites
WHERE ExpiryDate >= '2018-12-24 00:00:00'
AND ExpiryDate <= '2019-01-01 00:00:00'
Это следующие тесты, которые я провел для сравнения:
MySQL через shell = правильные результаты
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')
Мне очень интересно понять, почему первый запрос дал неверные результаты? Это ошибка PHP, MySQL или что-то я делаю неправильно? Запуск MySQL 5.6 и PHP 7.0. PHP работает через расширение MySQL. Я уже подтвердил эту проблему на нескольких машинах и подтвердил, что все работают с одними и теми же данными базы данных. Поле ExpiryDate является полем даты и времени.
Спасибо за понимание в продвинутом.
Задача ещё не решена.
Других решений пока нет …