我有一个表,存储用户登录信息,包括login_time(以mm/dd/yyyy hh:mm:ss为单位(及其user_id。我希望能够列出每周/每月等每天早上6点到晚上8点的唯一用户登录次数。我只是不知道如何只按时间排序,而不是按完整日期排序。早上6点后获取的当天基本查询
SELECT COUNT(DISTINCT user_id)
FROM users_logins
WHERE users_logins.login_time >= '2020-04-16 13:00:00'
其返回当天用户登录的唯一#。我希望能在早上6点到晚上8点之间跑一整天。这样我就可以生成包含详细信息的报告。你对如何最好地做到这一点有什么想法吗?
谢谢让我知道
MySQL可以识别数据类型TIME
,因此您只需执行以下操作:
where time(login_time) >= '06:00:00' and time(login_time) < '20:00:00'
要获得该时间段内不同登录的每日计数,您可以访问:
select date(login_time) login_day, count(distinct user_id)
from user_logins
where time(login_time) >= '06:00:00' and time(login_time) < '20:00:00'
group by login_date
如果需要,您可以按如下方式处理时间偏移:
select date(login_time - interval 7 hour) login_day, count(distinct user_id)
from user_logins
where
time(login_time - interval 7 hour) >= '06:00:00'
and time(login_time - interval 7 hour) < '20:00:00'
group by login_date