[英]Loop through range of dates in SQL Server
我有一個看起來像的存儲過程:
CREATE procedure [dbo].[SP_EXEC]
AS
DECLARE @DATE AS varchar(50)
SET @DATE = (SELECT TOP(1) CONVERT(VARCHAR, YEAR(DATEADD(MM, DATEDIFF(MM, '01/01/2000', DATEADD(MM, -1, GETDATE())), '01/01/2000'))) + RIGHT('00'+ CONVERT(VARCHAR, MONTH(DATEADD(MM, DATEDIFF(MM, '01/01/2000', DATEADD(MM, -1, GETDATE())), '01/01/2000'))), 2) + RIGHT('00' + CONVERT(VARCHAR, DAY(DATEADD(MM, DATEDIFF(MM, '01/01/2000', DATEADD(MM, -1, GETDATE())), '01/01/2000'))), 2)
FROM produit)
EXEC SP_DELETE_lIGNE_MOIS_EN_COURS @DATE
存儲過程工作正常,我的目標是循環執行從2012/03/01到當前日期的日期范圍。 如何更新我的存儲過程以對歷史記錄進行更新?
實際上,這里沒有足夠的信息來確保您需要的信息……但是,首先要注意的是:
您從表中選擇了前1個,但沒有從中選擇任何東西
您有相當復雜的選擇,看起來就像這樣:
convert(dateadd(month, DATEDIFF(month, 0, getdate()), 0), 112)
YYYYMMDD格式的當月第一天
您正在將其分配給varchar(50),並將其作為參數傳遞給過程。 程序實際上為此使用日期還是日期時間?
因此,我的猜測是您實際上需要此:
declare @date date
set @date = '20120301'
while (@date < getdate()) begin
exec SP_DELETE_lIGNE_MOIS_EN_COURS @date
set @date = dateadd(month, 1, @date)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.