Проблема сравнения дат в MySQL - PullRequest
2 голосов
/ 30 августа 2010

У меня MySQL с настройками ниже Версия сервера: 5.0.77 Версия клиента MySQL: 5.0.41 Версия протокола: 10 MySQL charset: UTF-8 Unicode (utf8) Сортировка соединений MySQL: utf8_unicode_ci

Я просто делаю простой запрос, и он вернулся неправильно SELECT * FROM table1, ГДЕ mydate> = '2010-08-30'

Сегодня 8/30, и у меня есть 1 строка с mydate '2010-06-01', и эта строка была выбрана. Зачем? Если я делаю это, он возвращает нулевую запись, которая является правильной SELECT * FROM table1, ГДЕ mydate> = NOW ()

Первый запрос был выполнен правильно на локальном, но не на живом сервере.

Как мне решить эту проблему? Это из-за другой версии MySQL, настроек времени, настроек сервера ... Что я ищу?

Спасибо.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

В MYSQL вы не должны использовать одинарные кавычки '' вокруг вашей даты, это заставляет сервер MYSQL интерпретировать вашу запись как строку, а не как дату.Я бы также предложил использовать date () вокруг вашей записи даты в базе данных, чтобы убедиться, что это действительно дата.

Вот пример того, как я бы выполнил ваш запрос в MYSQL:

SELECT * FROM table1 WHERE date(mydate) >= (2010-08-30)

Этот запрос должен вернуть желаемые результаты.

0 голосов
/ 30 августа 2010

Возможно, это проявление ошибки в MySQL, которая была исправлена ​​в версиях> = 5.0.50. Я считаю, что ошибка проявляется только при наличии индекса в столбце даты.

Подробнее см. отчет об ошибке .

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

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