首页 新闻 会员 周边

求个SQL语句

4
悬赏园豆:20 [已解决问题] 解决于 2011-02-28 09:33

 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 最后一条记录已经超过了当前时间了,所以就只输出到这里就行了 

注意:是针对表里的一条数据找出的结果,如果表里有多条数据,那结果就应该有好多
 

aixuexi的主页 aixuexi | 菜鸟二级 | 园豆:210
提问于:2011-02-24 15:36
< >
分享
最佳答案
0
/***************插入测试数据*******************/

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
*/

收获园豆:20
邀月 | 高人七级 |园豆:25475 | 2011-02-24 17:11
用临时表比较方便 能不能不用临时表,游标等 只用SQL语句查出结果呢
aixuexi | 园豆:210 (菜鸟二级) | 2011-02-24 17:14
你把上面这些写成一个存储过程调用就好了啊
artwl | 园豆:16736 (专家六级) | 2011-02-24 21:12
其他回答(2)
0

用当前的时间减除 创建时间  返回小时(一个整型),再与timespace  比较,小于或等于他的(timespace )就说明  有效

like%'远远'% | 园豆:635 (小虾三级) | 2011-02-24 15:51
你没理解意思 你看我插入的那条数据 是2-20 我需要根据这2-20找到2-21,2-22,2-23,2-24,2-25
支持(0) 反对(0) aixuexi | 园豆:210 (菜鸟二级) | 2011-02-24 16:00
0

什么数据库?

深水的猫 | 园豆:110 (初学一级) | 2011-02-24 19:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册