Это то, что я бы сделал
Время последней активности постоянно обновляется, если пользователь все еще находится в системе. (Я использую ajax для обновления даты и времени. Я не поделился этим кодом).
Перед обновлением строки.
- проверить, существует ли строка для активности
- если это так, получите временные метки для даты и вычтите текущее время (то, на которое вы изменяете last_activity, из того, которое хранится в БД), возьмите это число и добавьте его к целочисленному столбцу с именем, например, прошедшее время. (вам нужно добавить это в БД)
- если нет, то введите строку с 0 прошедшим временем (в зависимости от того, как вы вставили первую строку, возможно, при входе в систему), это может никогда не быть проблемой.
Для отметок времени вы должны сделать выбор, чтобы получить текущую строку. Возьмите поле datetime и используйте либо
$time = strtotime($row['last_activity']);
OR
$time = (new DateTime($row['last_activity']))->getTimestamp();
Затем вы просто делаете то же самое до даты, на которую собираетесь заменить это, и затем вычитаете, чтобы получить разницу в секундах.
$elapsed = time() - $time;
А затем добавьте это к текущему значению строк и сохраните его. Таким образом, вы можете отслеживать промежуточный итог в секундах времени, которое они проводят во время этого сеанса.
Тогда, когда вам нужно посчитать общее время, это просто сделать
SELECT SUM(elapsed_time) FROM {table} WHERE DATE(last_Ativity) = :date
Если бы вы имели дело только с двумя полями даты-времени в БД, было бы легче просто получить разницу между ними, но в смысле, что у вас уже есть код для постоянного обновления последнего активного поля, это потребует меньше работы в долгосрочной перспективе. ИМО.
Option2
Другой вариант - добавить еще одно поле Datetime, чтобы указать время начала или время входа в систему. Затем при запросе вы можете преобразовать их в их временные метки и вычесть, чтобы получить разницу.
Это делает SQL сложнее (при выполнении SUM), я не могу придумать, как вычислить истекшее время для нескольких строк, а затем суммировать их. Но это немного упрощает PHP. Итак, какой из способов лучше всего подходит для того, что вам нужно. Подумайте, нужна ли вам утилита, чтобы узнать, когда они вошли в систему, или вам нужен более простой способ подсчета времени, которое они проводят.
Нечто подобное.