去掉间隔中15分钟之内的时间
declare @t table
(fid int identity(1,1),t varchar(8))
insert into @t
select '08:21:00 ' union all
select '08:22:00 ' union all
select '08:23:00 ' union all
select '08:51:00 ' union all
select '08:52:00 ' union all
select '08:54:00 '
select * from @t
数据是上边的,我想得到下面的结果
1 08:21:00
4 08:51:00
也就是去掉间隔在15分钟之内的时间,咋整啊,请高手赐教,多谢
------解决方案--------------------select * from @t A where not exists(select * from @t where t> A.t)
------解决方案--------------------如果数据是这样的
select '08:21:00 ' union all
select '08:22:00 ' union all
select '08:23:00 ' union all
select '08:24:00 ' union all
select '08:25:00 ' union all
select '08:26:00 ' union all
select '08:27:00 ' union all
select '08:31:00 ' union all
select '08:32:00 ' union all
select '08:33:00 ' union all
select '08:34:00 ' union all
select '08:35:00 ' union all
select '08:41:00 ' union all
select '08:42:00 ' union all
select '08:43:00 ' union all
select '08:44:00 ' union all
select '08:45:00 ' union all
select '08:51:00 ' union all
select '08:52:00 ' union all
select '08:54:00 '
你要的结果会是什么
------解决方案--------------------会不会是这样:?
'08:21:00 ' 向后推15分钟, '08:36:00 ' ,所以这两个期间的都不要,只保留起始点 '08:21:00 '
然后下个计算从 '08:36:00 '开始依次类推
先下班了
------解决方案--------------------up
------解决方案--------------------declare @t table
(fid int identity(1,1),t varchar(8))
insert into @t
select '08:21:00 ' union all
select '08:22:00 ' union all
select '08:23:00 ' union all
select '08:41:00 ' union all
select '08:42:00 ' union all
select '08:43:00 ' union all
select '08:44:00 ' union all
select '08:45:00 ' union all
select '08:51:00 ' union all
select '08:52:00 ' union all
select '08:54:00 '
DECLARE @TIME1 DATETIME
DECLARE @min INT,@id int,@C INT
DECLARE @TIME2 DATETIME
DECLARE t_CURSOR CURSOR FOR
SELECT t,FID
FROM @t order by fid asc
OPEN t_CURSOR
FETCH NEXT FROM t_CURSOR
INTO @TIME1,@id
WHILE @@FETCH_STATUS=0
BEGIN
print @TIME1
SELECT @TIME2 = t
FROM @t WHERE FID=@id+1
IF @@ROWCOUNT> 0
BEGIN
print @TIME2+@@ROWCOUNT
print @id
select @C = datediff(minute,@TIME1,@TIME2)
--if datediff(minute,@TIME2,@TIME1) <15
if @C <15
begin
-- print @C
--if datediff(minute,@TIME2,@TIME1) <15
DELETE FROM @t WHERE fid = @id+1
-- select * from @t
end
END
FETCH NEXT FROM t_CURSOR
INTO @TIME1,@id
END
CLOSE t_CURSOR
deallocate t_CURSOR
select * from @t
笨办法,测试可以过,看看
------解决方案--------------------