首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

自訂 T-SQL 函數:計算兩日期間的週末天數

     編輯:關於SqlServer

函數定義

CREATE FUNCTION GetVac(@Start DATETIME, @End DATETIME)
RETURNS INT
AS
BEGIN
    DECLARE @TotalDays INT, @i INT, @WeekDay INT, @TempDate DATETIME, @Vac INT;
    SELECT @TotalDays = DATEDIFF(DAY, @Start, @End);
    SELECT @i = 0, @Vac = 0;
    WHILE (@i < @TotalDays)
    BEGIN
        SELECT @TempDate = DATEADD(DAY, @i, @Start);
        SELECT @WeekDay = DATEPART(WEEKDAY, @TempDate) - 1;  -- 0=Sun, 6=Sat
        IF (@WeekDay = 6 OR @WeekDay = 0)
            SELECT @Vac = @Vac + 1;
        SELECT @i = @i + 1;
    END
    RETURN @Vac;
END

呼叫範例

SELECT dbo.GetVac('2000-12-10', '2000-12-18');  -- 回傳 3(含 12/10、12/16、12/17)

說明

  • 以 WHILE 迴圈逐日判斷 DATEPART(WEEKDAY),累計週六(6)與週日(0)。
  • 適用於 SQL Server 2000/2005/2008 等版本。
  • 若需排除國定假日,可擴充建立假日表並 NOT IN 排除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved