62,240
社区成员




create table a(id int,time datetime)
insert into a
select 1,'2014-10-01 05:00:06' union all
select 2,'2014-10-01 05:00:26' union all
select 4,'2014-10-01 05:10:06' union all
select 6,'2014-10-01 05:11:06' union all
select 7,'2014-10-01 05:11:20' union all
select 8,'2014-10-01 05:11:30' union all
select 10,'2014-10-01 05:14:06'
Create proc d_gettime
as
begin
create table #tb(beginid int,endid int,duration int)
declare @begin int
declare @begintime datetime
declare @changebegin int
declare @end int
declare @endtime datetime
set @begin=0
set @changebegin=0
declare @item int
declare @itemvalue datetime
declare @i int
set @i=0
declare mycursor cursor for select id,time from a order by id
open mycursor
fetch next from mycursor into @item,@itemvalue
while (@@fetch_status=0)
begin
if(@i=0)
begin
set @begin=@item
set @begintime=@itemvalue
end
if(@item<>@changebegin+1 and @changebegin<>0)
begin
if(@end-@begin>0)
begin
insert into #tb select @begin,@end,DATEDIFF(SS,@begintime,@endtime)
end
set @begin=@item
set @begintime=@itemvalue
end
else
begin
set @end=@item
set @endtime=@itemvalue
end
set @changebegin=@item
set @i=@i+1
fetch next from mycursor into @item,@itemvalue
end
close mycursor
deallocate mycursor
select * from #tb
end
--执行存储过程
exec d_gettime
--结果
beginid endid duration
----------- ----------- -----------
1 2 20
6 8 24