--假设此表为test,日期字段为riqi
create procedure A(@nTime int, @nNumber int)
as
declare @newdate datetime,@i int
declare @sql varchar(8000)
alter table test add flag int
set @i=1
set @sql=''
select @newdate=max(riqi) from test
update test set flag=1 where riqi=@newdate
while @i<@nNumber
begin
select @newdate=max(riqi) from test where datediff(day,riqi,@newdate)>=@nTime--假设你要取的是天,如是小时,把day改为hour就可以了
update test set flag=1 where riqi=@newdate
set @i=@i+1
end
select * from test where flag=1
alter table test drop column flag
go
create procedure A(@nTime int, @nNumber int)
as
declare @newdate datetime,@i int
declare @sql varchar(8000)
alter table test add flag int
set @i=1
set @sql=''
select @newdate=max(riqi) from test
update test set flag=1 where riqi=@newdate
while @i<@nNumber
begin
select @newdate=max(riqi) from test where datediff(day,riqi,@newdate)>=@nTime--假设你要取的是天,如是小时,把day改为hour就可以了
update test set flag=1 where riqi=@newdate
set @i=@i+1
end
select * from test where flag=1
alter table test drop column flag
go
insert into #t
select 1,'2005-8-1 18:00:32' union
select 2,'2005-8-1 18:01:04' union
select 3,'2005-8-1 18:02:32' union
select 4,'2005-8-1 18:03:04' union
select 5,'2005-8-1 18:14:32' union
select 6,'2005-8-1 18:15:04'
go
--创建sp
create procedure p_get(@nTime int,--时间间隔多少秒。
@nNumber int)
as
declare @sql varchar(1000)
select @sql='select top '+convert(varchar,@nNumber)+' * from #t a where (select top 1 datediff(ss,dt,a.dt) from #t where dt<a.dt order by dt DESC)='+convert(varchar,@nTime)+' order by dt desc'
exec(@sql)
goexec p_get 32,2
/*
结果 取出记录的时间跟上条记录相差32秒的前两条。
id dt
------------------------
6 2005-08-01 18:15:04.000
4 2005-08-01 18:03:04.000
*/
@nTime int,
@nNumber int
as
set rowcount nNumber
select * from 表
where datediff(second,录入时间,getdate())%@nTime=0 --间隔以秒为单位
@nTime int,
@nNumber int
as
set rowcount nNumber
select * from 表
where datediff(second,录入时间,getdate())%@nTime=0 --间隔以秒为单位
order by 录入时间 desc --少写了最近的处理
@nTime int,
@nNumber int
as
set rowcount @nNumber
select * from 表
where datediff(second,录入时间,getdate())%@nTime=0 --间隔以秒为单位
order by 录入时间 desc --少写了最近的处理