[원본] Sql 서버 가 어느 해 한 달 에 몇 개의 근무일 을 가 져 옵 니까? (일요일 만 포함 되 지 않 음)

3058 단어
--           (     )
CREATE FUNCTION f_getnums ( @year_month VARCHAR(8) )
RETURNS INT
AS 
    BEGIN
        DECLARE @bdt DATETIME ,
            @edt DATETIME ,
            @i INT
        SET @i = 0
        SET @bdt = CAST(@year_month + '-01' AS DATETIME)
        SET @edt = DATEADD(d, -1,
                           DATEADD(month, 1,
                                   CAST(@year_month + '-01' AS DATETIME)))

        WHILE DATEDIFF(d, @bdt, @edt) >= 0 
            BEGIN
                IF --DATEPART(dw, @bdt) = 1                    OR
                    DATEPART(dw, @bdt) = 7 
                    BEGIN
                        SET @i = @i + 1
                    END
                SET @bdt = DATEADD(d, 1, @bdt)
            END
        RETURN @i
    END

DECLARE @date DATETIME 
SET @date = '2012-12-01'
 --1.          
 SELECT  DATEDIFF(dd, @date, DATEADD(mm, 1, @date))  
 --2.             
 select dbo.f_getnums(CONVERT(VARCHAR(07), @date, 120)) AS workday 
 --3.             (      )
 select DATEDIFF(dd, @date, DATEADD(mm, 1, @date))- dbo.f_getnums(CONVERT(VARCHAR(07), @date, 120)) AS workday 

좋은 웹페이지 즐겨찾기