規則需要定好。
例如時間段是2015-01-01 12:00 ~ 2015-01-01 13:00
而用戶的上線時間,下線時間是
2015-01-01 11:00 ~ 2015-01-01 12:30:00那麼在這個時間段中,用戶是在線還是離線呢?

解决方案 »

  1.   

    这个算11:00-12:00一个,12:00-13:00一个。
      

  2.   

    你需要先建一张分组标志表(G),以按小时为例
    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())
    的作用,你观察一下就知道了。切忌冥思!根据情况你还需加入过滤日期的代码