Mysql выбирает записи более 3 месяцев

Я пытаюсь написать запрос, чтобы выбрать все записи из таблицы users, где User_DateCreated (поле datetime) >= 3 месяца с сегодняшнего дня.

Любые идеи?

Ответ 1

SELECT  *
FROM    users
WHERE   user_datecreated >= NOW() - INTERVAL 3 MONTH

Ответ 2

Если вы хотите игнорировать время суток, когда пользователь был создан, вы можете использовать следующее. Таким образом, это покажет кого-то, созданного в 8:00, если вы запустите Quassnoi example query в 2:00 pm.

SELECT  *
FROM    users
WHERE   DATE(user_datecreated) >= DATE(NOW() - INTERVAL 3 MONTH)

Ответ 3

Использование DATE (user_datecreated) не позволяет mysql использовать любые индексы в столбце, делая запрос очень медленным, когда таблица растет.

Вам не нужно игнорировать время, когда пользователь был создан, если вы удалили время с даты "3 месяца назад", так как все пользователи, созданные в этот день, будут соответствовать этому условию.

SELECT  *
FROM    users
WHERE   user_datecreated >= DATE(NOW() - INTERVAL 3 MONTH);