Я пытаюсь получить все записи, где start_date больше текущей метки времени. Любые идеи, почему это может не работать:
WHERE (UNIX_TIMESTAMP(event_dates.start_date)) > DATE(NOW())
и это пример столбца start_date 2010-10-30
Сравнение этих 2 приводит к неожиданным результатам, я уверен.
Используйте либо UNIX_TIMESTAMP
, либо DATE
, но делайте это для обоих. (или выполните UNIX_TIMESTAMP(DATE(NOW()))
, чтобы сравнить правильные форматы.
Вы сравниваете значение даты (yyyy-mm-dd) с эпохой UNIX, поэтому ваш запрос не работает.
Просто убедитесь, что вы используете правильные типы данных для соответствующего случая. Вам нужны даты, используйте дату или дату, а не временную метку. Плюс тот факт, что столбец timestamp в таблице MySQL имеет специальные свойства.
Также используйте индекс в столбце этой даты. Ваш запрос не будет оптимизирован из-за функции now() в предложении where. Попытайтесь сначала получить значение now в переменной и запустить запрос с использованием этой переменной, тогда оптимизатор MySQL будет иметь возможность оптимизировать ваш запрос.