중복 된 것처럼 보이지만 프로 시저 내부에서 임시로 만든 테이블의 행 수를 계산하려고합니다.두 날짜 사이의 날짜를 계산하는 절차
(주의 : 표는 잘못 코딩되었을 가능성이 큽니다.) @rows
변수는 계산해야하며 @StartDate
변수에서 1 년의 정확한 일수를 출력해야합니다. (윤년 포함).
@StartDate
변수 다음에 정확히 1 년 동안 매일 테이블에 대해 INSERT
날짜가 VALUES
이어야합니다.
임시 할당 표가이 지정에 필요합니다. 미안하지만 선생님이 요구하는 것입니다.
는 참고 : 나는 초보자 해요, 도움 주시면 감사하겠습니다 :) 당신이 #DateLookup
테이블이 필요한 이유
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' 테이블이 필요합니까
DATE
필드에 숫자 (DAY(@todaysDate)+ @countIndex
)를 입력하려고하기 때문에 실패? 이 절차를 실행할 때마다이 테이블을 만들 것입니다. 당신은 그것을 내려야 만합니다 – Kaf당신의 프로 시저에는 문제가 가득 찼지만 현재의 문제점 (오류? 잘못된 결과?) 또는 프로 시저가 기대하는 바가 무엇인지는 말하지 않았습니다. 당신은 특정 날짜와 그 다음날 같은 날 사이의 일수를 세는 것을 원하지만,'DATEDIFF()'와'DATEADD()'만 필요하다면 임시 테이블이나 루핑이 필요 없다. . 논리를 명확히 할 수 있다면 누군가가 도움을 줄 수 있습니다. – Pondlife
죄송합니다. 임시 테이블이 필요합니다. 출력은 '0'입니다. atleast가되어야합니다. –