似乎是多餘的,但我正在嘗試計算過程中臨時創建的表中的行。過程計算兩個日期之間的日期
(注意:表格最有可能編碼錯誤)需要計算@rows
變量並應輸出@StartDate
變量在一年中的確切天數。 (這是包括閏年)。
創建的表格也應該在@StartDate
變量的整整一年後的每一天的INSERT
日期VALUES
。
TEMPORARY TABLE在此作業中需要。對不起人,但那是老師所要求的。
FYI:我是新手,和幫助將不勝感激:)
CREATE PROCEDURE usp_DateLookup
@StartDate DATE,
@Rows INT OUTPUT
AS
DECLARE @countIndex INT
DECLARE @yearDate DATE
DECLARE @todaysDate DATE
SET @yearDate = DATEADD(YEAR, 1,@StartDate)
SET @todaysDate = GETDATE()
BEGIN
CREATE TABLE #DateLookup
(
DateID INT IDENTITY (1,1),
DateDescription DATE
)
WHILE (SELECT DATEDIFF(DD,@StartDate, @yearDate) FROM #DateLookup) <= 366
BEGIN
SET @countIndex = @countIndex +1
INSERT #DateLookup (DateDescription)
VALUES (DAY(@todaysDate)+ @countIndex)
END
SET @Rows = (SELECT COUNT(DateDescription) FROM #DateLookup)
END
GO
DECLARE @StartDate DATE
DECLARE @Rows INT
SET @StartDate = '2012-05-06'
EXEC usp_DateLookup @StartDate, @Rows OUTPUT
PRINT CONVERT(NVARCHAR,@Rows)
爲什麼你需要'#DateLookup'表?每次運行此過程時都要創建此表。你必須丟棄它 – Kaf
你的程序充滿了問題,但是你沒有說明你目前的問題是什麼(錯誤?結果不正確?)或你希望你的程序做什麼。您似乎想要計算特定日期和一年後同一天之間的天數,但在這種情況下,您只需要'DATEDIFF()'和'DATEADD()',不需要臨時表或循環。如果你能澄清你的邏輯,那麼有人可能會提供幫助。 – Pondlife
對不起,這份工作需要臨時表。我得到的輸出是'0'。它需要至少365 –