2015-06-21 56 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顯示示例顯示例子 –