В настоящее время я пишу фрагмент кода, который просматривает базу данных и проверяет, есть ли какие-либо администраторы в данный момент в сети, и показывает их на боковой стороне страницы как онлайн.
Каждый раз, когда пользователь просматривает страницу на моем сайте (когда он вошел в систему), он получает текущее время и обновляет столбец с именем lastseen.
У меня есть столбец роли, который помечает пользователя от администратора, и я хочу, чтобы он выполнил запрос к базе данных для всех администраторов и проверил последний увиденный столбец. Если это время не превышает 5 минут текущего времени, выведите его в строку который я могу затем взять и отформатировать позже.
Это то, что я сейчас пробовал, но ничего не вернулось.
SELECT username, role, lastseen FROM database.accounts WHERE lastseen >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND role='admin'
Я храню lastseen как дату (‘Y-m-d H-i-s’) из PHP, так что это выглядит так
2017-02-18 16:07:42
в базе данных.
Для чего нужен ваш тип данных? lastseen
, Ваш запрос кажется правильным, просто попробуйте с
SELECT username, role, lastseen FROM database.accounts
WHERE STR_TO_DATE(lastseen, '%Y-%m-%d %H:%i:%s') >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND role='admin'
Также убедитесь, что ваш PHP и MYSQL Server имеют одинаковые часовые пояса
Других решений пока нет …