SQL SERVER统计通话时间总长

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:49:45
sql server2005
表结构如下:
电话号码 开始时间 结束时间
tel stime etime
此表是通话记录表,一个用户可能有多次通话,现在需要统计某用户在某月中的通话时间总长。并以HH:MM:SS的格式显示。

我现在使用的是先求出该用户该月的通话总秒数,然后进行处理,得到时和分,但是这样很麻烦,SQL SERVER有没有提供这方面的函数?
如有,请告知。

select convert(varchar(10),sum(datediff(s,stime,etime))/3600)+':'+convert(varchar(10),sum(datediff(s,stime,etime))%3600/60)+':'+convert(varchar(10),sum(datediff(s,stime,etime))%3600%60)
from 表 where month(stime)='...' and year(stime)='...' and 用户ID='...'

没办法,只能这么麻烦,要做好看点只能自己动手写函数

create function test
( @s int)
returns varchar(10)
as
begin
declare @result varchar(10)
set @result=convert(varchar(10),@s/3600)+':'+convert(varchar(10),@s%3600/60)+':'+convert(varchar(10),@s%3600%60)
return (@s)
end
go

select test(sum(datediff(s,stime,etime))) from 表 where month(stime)='...' and year(stime)='...' and 用户ID='...'

没有专用函数,呵呵,你只能通过程序来处理计算,然后对结果进行时间格式化,别无它法.

只能按你的方法计算。比较麻烦。