各位高人,看能实现不。
这个表有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
这个表有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
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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
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
nameid datetime-starttime
1 515151
2 454545
3 323232datetime-starttime 最好是秒数,这样我在程序里计算天数。
因为最后到画面上显示的是天数。所以要根据nameid 加到一起来计算
select nameID,sum(timestampdiff(second,starttime,endtime))
from 这个表
group by nameID
1899-12-19 应该是台湾的年份吧 :)
-----------------------------------------------
02:45:01这样怎么不对了
'1900-02-27',
'1900-02-28',
'1900-02-29',---> 这天不存在(除了在Excel里),1800,1900,2100都不是闰年'1900-03-01'