2015-06-21 55 views
-1

我有这样的查询:while循环而不是通过日期循环正常

declare @currentDate datetime,@enddate datetime; 

set @currentDate = '06/1/2015'; 
select @enddate='06/05/2015' 

while @currentDate < @enddate 



begin 



select @currentDate = dateadd(DAY,1,@currentDate); 
select @currentDate as currentdate 
end 

,但在结果集中,这是显示的不是当前的日期从2015年6月2日在。它开示日期wards..i想包括我的当前日期也

+0

我得到只有4条记录。从2015-02-06到2015-05-06.实际上我想得到5条记录。从2015-01-06到2015-05-06 –

+1

请使用YYYYMMDD格式,其他有不同的含义取决于语言/区域设置。如果您想要显示第一天,请在更改值之前进行选择,并将结束条件更改为<= @ enddate –

+0

亲爱的@JamesZ ,,能否显示您的示例代码?请 –

回答

1

这就是我的意思:

declare @currentDate datetime,@enddate datetime 

set @currentDate = '20150601' 
set @enddate='20150605' 

while (@currentDate <= @enddate) begin 
    select @currentDate as currentdate 
    select @currentDate = dateadd(DAY,1,@currentDate) 
end 
+0

先生这是工作..其实我想实现这一点:请你看看这个链接:http://stackoverflow.com/questions/30962125/how-to-use-环合存储过程对复制数据从酮表到另一功能于平方 –

0

您在while循环做的第一件事是增量的currentdate。这将是自2015年6月1日移到2015年6月2日马上所以不是做:

declare @currentDate datetime,@enddate datetime; 
set @currentDate = '06/1/2015'; 
select @enddate='06/05/2015' 
while @currentDate < @enddate --- May need to be <= if inclusive range. 
begin  
    --- Do stuff with currentDate here THEN increment at the very end. 
    set @currentDate = dateadd(DAY,1,@currentDate); 
end 
+0

所以在这种情况下,我想改变? –

+0

或我可以使用任何其他想法? –

+0

while循环中的最后一件事是增量。 https://social.msdn.microsoft.com/forums/sqlserver/en-US/05177b42-871b-4620-ad76-3​​ee5a683cd22/while-loop-for-date显示示例显示例子 –