規則需要定好。
例如時間段是2015-01-01 12:00 ~ 2015-01-01 13:00
而用戶的上線時間,下線時間是
2015-01-01 11:00 ~ 2015-01-01 12:30:00那麼在這個時間段中,用戶是在線還是離線呢?
例如時間段是2015-01-01 12:00 ~ 2015-01-01 13:00
而用戶的上線時間,下線時間是
2015-01-01 11:00 ~ 2015-01-01 12:30:00那麼在這個時間段中,用戶是在線還是離線呢?
调试欢乐多
flag
0
1
2
3
4
5
.....
则有
select flag, count(*) as cnt
from
(select * from G left join tbl_name on G.flagt>=hour(acctstarttime)
where G.flag<=hour(ifnull(acctstoptime,now())
) T
group by 1ifnull(acctstoptime,now()) 是为解决你 acctstoptime 可能为 null 的
如果不计算下线时间为空的是,之写作 acctstoptime 即可select * from G left join tbl_name on G.flagt>=hour(acctstarttime) where G.flag<=hour(ifnull(acctstoptime,now())
的作用,你观察一下就知道了。切忌冥思!根据情况你还需加入过滤日期的代码