各位高人,看能实现不。
这个表有4个字段 ,id(int), nameID(int) ,startDate(datetime),endDAT(datetime)
插入好多条数据,有的人可能有多条数据,我要实现的功能是,用一条语句,把每个人的时间间隔总和计算出来,然后按照每个人的时间间隔总和对人员(nameID)进行排序,这个日期都是要精确到秒的。我水平不行,试着用DATEDIFF,TIMEDIFF计算经过的秒数都不准确,高手指点迷津,真捆扰死了id(int), nameID(int) ,startDate(datetime),endDAT(datetime)
1         ww           1899-12-10 00:00:00  1900-12-15 00:00:00
2         zz           1899-12-15 00:00:01  1899-12-19 00:02:00
3         ww           1899-12-15 10:00:03  1899-12-15 10:00:03
4         ee           1899-12-15 00:00:01  1899-12-19 00:02:00

解决方案 »

  1.   

    select nameID,sum(UNIX_TIMESTAMP(endDAT)-UNIX_TIMESTAMP(startDate))
    from 这个表
    group by nameID 
    order by 3 desc;   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    create table testtbl(nameid int,starttime datetime,endtime datetime);
    insert into testtbl value(1,'1899-12-19 10:00:05','1900-11-19 12:45:06');
    insert into testtbl value(2,'1855-11-19 10:59:05','1856-11-22 10:16:56');
    insert into testtbl value(3,'1899-12-19 10:00:05','1900-11-19 08:12:05');
    insert into testtbl value(1,'1858-04-22 09:25:45','1859-09-18 10:10:47');建立这样一个表
    我用select id,sum(UNIX_TIMESTAMP(endtime)-UNIX_TIMESTAMP(starttime))
    from testtbl
    group by id  检索出来的怎么时间间隔怎么都是0
      

  3.   

    麻烦各位了,我是想要得到类似这样的结果
    nameid   datetime-starttime
    1        515151
    2        454545
    3        323232datetime-starttime  最好是秒数,这样我在程序里计算天数。
    因为最后到画面上显示的是天数。所以要根据nameid 加到一起来计算
      

  4.   


    select nameID,sum(timestampdiff(second,starttime,endtime))
    from 这个表
    group by nameID 
      

  5.   

    转换成TIMESTAMP类型,这样就可以计算啦。
    1899-12-19 应该是台湾的年份吧 :)
      

  6.   

    SELECT TIMEDIFF('1900-12-19 12:45:06','1900-12-19 10:00:05');
     
    -----------------------------------------------
    02:45:01这样怎么不对了
      

  7.   

    应该没错啊,你觉得有所是不是因为
    '1900-02-27',
    '1900-02-28',
    '1900-02-29', ---> 这天不存在(除了在Excel里),1800,1900,2100都不是闰年
    '1900-03-01'