希望在早上 6 点到晚上 8 点之间提取应用程序的每日不同登录次数

looking to extract daily count of distinct logins for application between 6am and 8pm

我有一个 table 存储用户登录信息,包括 login_time(在 mm/dd/yyyy hh:mm:ss 中)以及他们的 user_id。我希望能够列出每天早上 6 点到晚上 8 点每个 week/month 等的唯一用户登录的每日计数。我只是不确定如何能够仅按时间而不是完整的日期时间进行排序。获取当天早上 6 点后的基本查询

SELECT COUNT(DISTINCT user_id) 
 FROM users_logins
 WHERE users_logins.login_time >= '2020-04-16 13:00:00'

其中 returns 当天唯一的用户登录数。我希望能够在早上 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