Sql-Server-2016

有開始日期和結束日期,想要添加除週末日期以外的所有日期

  • September 26, 2019

所以我有一個我正在處理的儲存過程,它有一個使用者輸入一個開始日期和結束日期。我希望能夠將除週末日期之外的所有日期插入表中。它將記錄添加到表中就好了,它還添加了周末日期。這是我得到的最接近的,但它沒有按我預期的那樣工作。任何幫助或方向將不勝感激。

Declare @w_new_id int = SCOPE_IDENTITY();

         With theDates AS
        (SELECT @p_start_date as theDate
         UNION ALL  
         SELECT DATEADD(day, 1, theDate)
           FROM theDates
          WHERE DATEADD(day, 1, theDate) <= @p_end_date
        )



       INSERT INTO XLT_Vacation_Request_Dates
           (
               request_id,
               requester_id,
               requester_name,
               employee_id,
               employee_name,
               requested_date,
               status

           )
       SELECT
               @w_new_id,
               @p_requester_id,
               @w_user_name,
               @w_user,
               @p_employee_name,
               theDate,
               0 -- Unapproved
               from theDates where ((DATEPART(dw, @p_start_date) + @@DATEFIRST) % 7) NOT IN (0, 1) OPTION (MAXRECURSION 0) 

將您的最終選擇列表更改為

SET DATEFIRST 7 -- ( Sunday )
SELECT *           
from theDates where DATEPART(WEEKDAY,theDates.theDate ) NOT IN(7,1)

注 7,1 對應週六和周日,根據您所在的地區而有所不同。

或者

SELECT *           
from theDates where DATENAME(DW, thedate) NOT IN('Saturday','Sunday')

引用自:https://dba.stackexchange.com/questions/249679