ID timespace(int) createtime(date)
1 24 2010-02-20 15:00:00
timespace字段表示时间间隔(小时)
createtime表示创建时间
想要的输出结果就是
ID timetext
1 2010-02-21 15:00:00
1 2010-02-22 15:00:00
1 2010-02-23 15:00:00
1 2010-02-24 15:00:00
1 2010-02-25 15:00:00
就是createtime加上间隔时间,现在是2010-02-24 15:34:00 最后一条记录已经超过了当前时间了,所以就只输出到这里就行了
注意:是针对表里的一条数据找出的结果,如果表里有多条数据,那结果就应该有好多
/***************插入测试数据*******************/
Create table testdb2011
(ID int primary key identity(1,1)
,Timespace int null
,Createtime datetime null
)
go
insert into testdb2011
select 24 ,'2011-02-20 15:00:00'
union all select 24 ,'2011-02-19 12:00:00'
select * from testdb2011
/*******定义一个变变量*************/
Declare @tbl table
(PKID int primary key identity(1,1)
,ID int null
,timetext datetime null
)
/**********定义临时变量**********/
Declare @tmpInt int
set @tmpInt=-1
Declare @space int
set @space=0
Declare @CreateTime datetime
Declare @day int
SET NOCOUNT ON
/***************定义一个游标,循环表中所有记录*******************/
DECLARE TmpID_cursor CURSOR FOR Select * from testdb2011
OPEN TmpID_cursor
FETCH NEXT FROM TmpID_cursor INTO @tmpInt,@space,@CreateTime
set @day=1
WHILE (@@FETCH_STATUS = 0 )
BEGIN
--插入记录
while (Dateadd(hh,@day*@space,@CreateTime)<getdate())
begin
Insert into @tbl select @tmpInt,Dateadd(hh,@day*@space,@CreateTime)
set @day=@day+1
end
--插入结束
FETCH NEXT FROM TmpID_cursor into @tmpInt,@space,@CreateTime
END
CLOSE TmpID_cursor
DEALLOCATE TmpID_cursor
/***************结束游标*******************/
select ID,timetext from @tbl
执行结果:
/*
ID timetext
1 2011-02-21 15:00:00.000
1 2011-02-22 15:00:00.000
1 2011-02-23 15:00:00.000
1 2011-02-24 15:00:00.000
2 2011-02-24 12:00:00.000
*/
用当前的时间减除 创建时间 返回小时(一个整型),再与timespace 比较,小于或等于他的(timespace )就说明 有效
什么数据库?