黛玉党们出来啦,小生这里有个关于 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 就可以圆满解决了,但是这个重复之中多了一个变量。我确实不知道怎么搞了。
请教啦
[解决办法]
insert into atable select date,getdate() from table where date between '2011-10-01' and '2011-10-31'
[解决办法]
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')
[解决办法]
--功能:找出在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