MySQL распознает тип данных TIME
, поэтому вы можете просто сделать:
where time(login_time) >= '06:00:00' and time(login_time) < '20:00:00'
Чтобы получить ежедневное количество различных входов в систему за этот период, вы должны go:
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