簡體   English   中英

SSMS存儲過程未顯示截止日期的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM