php sql проверяет неактивных пользователей

#php #sql

#php #sql

Вопрос:

Я хотел бы перечислить участников, которые не входили в систему в течение 90 дней. В mysql у меня есть столбец last_access, который обновляется каждый раз, когда пользователь входит в систему. Поэтому я думаю, что проверку можно выполнить в этом столбце. Формат столбцов таков: date("Y/m/d : H:i:s", time()) (2011/05/10 : 21:42:33)

Какой SQL-запрос был бы подходящим для использования?

Комментарии:

1. Почему вы используете нестандартный формат даты? Вам действительно следует использовать временную метку UNIX в столбце INT или DATETIME.

2. В каком типе поля хранится это значение?

3. Не говорите нам, что вы сохраняете дату в столбце varchar для удобства чтения .

4. Хорошо, я думаю, что могу настроить свой запрос для работы с VARCHAR, но все же, есть какие-либо планы по преобразованию поля и данных в тип DATETIME?

5. Да, я преобразовал его в datetime ( last_access по УМОЛЧАНИЮ datetime НЕ РАВНО NULL ‘0000-00-00 00:00:00’,) и дату, которую теперь сохраняем с помощью функции NOW() (вставляем в значения членов (user, pass, last_access) ($username, $pass, NOW())

Ответ №1:

 SELECT username
FROM users
WHERE DATEDIFF(NOW(),last_access)>90
  

Комментарии:

1. Предполагается, что last_access это столбец с правильным типом даты / времени. Если это не так, если @Zero на самом деле использует строку, как он предлагает, рекомендуется исправить тип столбца, а не внедрять обходной путь.

Ответ №2:

 SELECT columns
FROM table
WHERE last_access < CURRENT_TIMESTAMP - INTERVAL 90 DAY