读书人

如何统计时间-求SQL

发布时间: 2012-02-12 17:16:33 作者: rapoo

怎么统计时间---求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

读书人网 >VC/MFC

热点推荐