表:
id      loginTime                 exitTime               playerid    
1 2008-05-28 09:38:17.000 2008-05-28 09:53:36.000 14958
2 2008-05-28 09:42:59.000 2008-05-28 10:18:00.043 14959
3 2008-05-28 09:48:00.000 2008-05-28 10:18:00.043 14960
4 2008-05-28 09:49:38.000 2008-05-28 09:49:49.000 14961
5 2008-05-28 09:49:49.000 2008-05-28 10:18:00.043 14961
要求:统计 '2008-06-10 18:00'以后的,玩家在线时间统计,注意:如果是新人而且还在线那他的退出时间默认是‘'2000-1-1' ’这个统计的时候要按照当前时间统计。我写的sql 但是报错,为什么?大家帮忙啊?
select playerid,  sum( datediff (n, loginTime,case exitTime when '2000-1-1' then getdate()))  
from loginRecord 
where  logintime >'2008-06-10 18:00'
group by playerid

解决方案 »

  1.   

    select playerid,  sum( datediff (n, loginTime,case exitTime when '2000-1-1' then getdate() else exittime end))  
    from loginRecord 
    where  logintime >'2008-06-10 18:00' 
    group by playerid
      

  2.   

    case exitTime when '2000-1-1' then getdate() end
      

  3.   

    select playerid,  sum( datediff (n, loginTime,case exitTime when '2000-1-1' then getdate() end))  
    from loginRecord 
    where  logintime >'2008-06-10 18:00' 
    group by playerid
      

  4.   

    少写了一个 end
    select playerid,  sum( datediff (n, loginTime,case exitTime when '2000-1-1' then getdate()) end)  
    from loginRecord 
    where  logintime >'2008-06-10 18:00' 
    group by playerid
      

  5.   

    datediff (n,
    这个n是什么意思?取的是时间的哪个部分
      

  6.   

    select playerid, sum(datediff(n,loginTime,case exitTime when '2000-1-1' then getdate() else exittime end)) as '在线时间(分钟)'
    from loginRecord
    where  logintime >'2008-06-10 18:00'
    group by playerid