怎么统计时间---求SQL
表结构:
工号,姓名,开始时间,结束时间
----------------------------
现在要在一个时间段的统计出每个人在某个时间段内的 总得用时(结束时间-开始时间)
[解决办法]
不知道你要的结果是怎样的,我改了一下算法,可以精确到分钟.计算结果是小时,使用DateDiff函数
如果你需要时间范围,只需要在Group By之前加上Where就可以了.
create table dbo.kq
(
Fcode varchar(50),
Fname varchar(50),
FSTDT datetime,
FENDT datetime
)
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1101','张三','2011-9-22 7:00:00','2011-9-22 12:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1101','张三','2011-9-22 13:00:00','2011-9-22 17:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1102','李四','2011-9-22 8:00:00','2011-9-22 12:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1102','李四','2011-9-22 14:00:00','2011-9-22 17:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1103','王五','2011-9-22 9:00:00','2011-9-22 12:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1103','王五','2011-9-22 15:00:00','2011-9-22 17:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1103','王五','2011-9-23 15:00:00','2011-9-23 17:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1103','王五','2011-9-24 15:00:00','2011-9-24 17:00:00')
insert into kq (Fcode,Fname,FSTDT,FENDT) values ('1103','王五','2011-9-25 15:00:00','2011-9-25 17:00:00')
select Fcode 工号,Fname 姓名,FSTDT 开始时间,FENDT 结束时间 from kq
select *,datediff(minute,FSTDT,FENDT)/60 from kq
select Fcode 工号,Fname 姓名,count(*) 次数,sum(datediff(minute,FSTDT,FENDT)/60) 总时间 from kq
where FSTDT>='2011-09-22' and FENDT<='2011-09-23'
group by Fcode,Fname