首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

黛玉党们出来啦,小生这里有个关于 MSSQL重复执行的有关问题要请问咯,妈咪妈咪哄~

2012-02-26 
黛玉党们出来啦,小生这里有个关于 MSSQL重复执行的问题要请教咯,妈咪妈咪哄~~~好吧我承认我是标题党!问题

黛玉党们出来啦,小生这里有个关于 MSSQL重复执行的问题要请教咯,妈咪妈咪哄~~~
好吧我承认我是标题党!
问题是这样的, 介于目前数据的特殊性,我需要 将一段SQL语句根据今天的天数执行N次。
比如 今天是10月5号 那么我需要做到的是

insert into atable 
select '2011-10-01',getdate() from table where date='2011-10-01'

insert into atable 
select '2011-10-02',getdate() from table where date='2011-10-02'

insert into atable 
select '2011-10-03',getdate() from table where date='2011-10-03'

insert into atable 
select '2011-10-04',getdate() from table where date='2011-10-04'

insert into atable 
select '2011-10-05',getdate() from table where date='2011-10-05'

也就是说如果今天是10月31号,那么我最后会把上面的语句执行31次 
本来重复执行直接用 go N 就可以圆满解决了,但是这个重复之中多了一个变量。我确实不知道怎么搞了。
请教啦

[解决办法]

SQL code
insert into atable select date,getdate() from table where date between '2011-10-01' and '2011-10-31'
[解决办法]
SQL code
insert into atable  select DATEADD(DAY,number,'2011-10-05'),getdate() from Table1 ,master..spt_values  where type='p' and number<DATEDIFF(DAY,'2011-10-01','2011-10-05')
[解决办法]
SQL code
--功能:找出在2个日期之间的日期--startdate:2009年9月15日  endDate:2009年10月3日 declare @startdate datetime,@enddate datetimeset @startdate='2009-08-30'set @enddate='2009-09-05'select convert(varchar(10),dateadd(day,number,@startdate),120) from    master..spt_values where     datediff(day,dateadd(day,number,@startdate), @enddate)>=0    and number>0     and type='p'/*----------2009-08-312009-09-012009-09-022009-09-032009-09-042009-09-05(6 行受影响)/*
[解决办法]
找它的开始时间和结束时间即可:

declare @startdate datetime,@enddate datetime
set @startdate='2010-10-01'
set @enddate='2010-10-05'

while @startdate<=@enddate
begin

insert into atable
select @startdate,@enddate from table where date=@startdate
set @startdate=dateadd(day,1,@startdate)
end

热点排行