[英]BETWEEN @Start and @End Date; Not pulling in records which fall beyond the date
[英]SSMS Stored procedure not showing records that fall on end date
我有一個存儲過程,它有兩個參數:開始日期( @SDate
)和結束日期( @EDate
),之后它輸出兩個日期之間的數據摘要。
但是,它不顯示落在@EDate
上的@EDate
。
這是我的代碼:
DECLARE TidCursor SCROLL CURSOR
FOR
SELECT DISTINCT
A.TID, P.ProjGroup, A.Location, P.MainSubCon
FROM
[PRT].[dbo].[Personnel] P,[PRT].[dbo].[Attendance] A
WHERE
A.TID = P.TID
AND (A.Timein BETWEEN @SDate AND @EDate)
AND (A.Timeout BETWEEN @SDate AND @EDate)
AND (A.Timein IS NOT NULL AND A.timeout IS NOT NULL)
ORDER BY
A.TID ASC
OPEN TidCursor
FETCH NEXT FROM TidCursor INTO @rec1_Tid, @rec1_PG, @rec1_Loc, @rec1_MainSubCon
.
.
.
DECLARE AttnCursor SCROLL CURSOR FOR
SELECT TimeIn, TimeOut, Location
FROM Attendance
WHERE TID = @rec1_Tid
AND (Timein BETWEEN @SDate AND @EDate)
AND (Timeout BETWEEN @SDate AND @EDate)
AND (Timein IS NOT NULL AND timeout IS NOT NULL)
ORDER BY TimeIn
-- variables used to check for multiple logins in the same day
SET @curDate = '';
SET @preDate = '';
OPEN AttnCursor
FETCH NEXT FROM AttnCursor INTO @indt, @outdt, @inloc
WHILE (@@FETCH_STATUS = 0)
BEGIN
.
.
.
FETCH NEXT FROM AttnCursor INTO @indt, @outdt, @inloc
END -- END WHILE (@@FETCH_STATUS = 0)
-- Closes the cursor
CLOSE AttnCursor;
DEALLOCATE AttnCursor;
FETCH NEXT FROM TidCursor INTO @rec1_Tid, @rec1_PG, @rec1_Loc, @rec1_MainSubCon
END -- END WHILE (@@FETCH_STATUS = 0)
-- Closes the cursor
CLOSE TidCursor;
DEALLOCATE TidCursor;
原因是您傳遞的參數可能是沒有時間指示的日期,因此它們是午夜引用。 具有時間參考的任何日期(例如日志時間)都將晚於午夜參考。
例如,以下內容是正確的:
2016-08-05 07:41:33 > 2016-08-05
解決方案很簡單。 代替
between @SDate and @EDate
寫
between @SDate and dateadd(d, 1, @EDate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.