#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