Сравнение даты и времени, возвращающее неверные результаты в MySQL

Я столкнулся с необычной проблемой, когда следующий запрос 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 является полем даты и времени.

Спасибо за понимание в продвинутом.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]