2014-03-31 7 views
1

휴일 예약 응용 프로그램을 만들려고하는데 JQuery UI 달력이 실행됩니다. 그들이 선택한 스타와 종료 날짜는 SQL에 전달되어 휴일을 요청 된 테이블에 놓습니다. 유일한 문제는 내가 시작일과 종료일을 입력하면 주말을 고려하지 않는다는 것입니다. 시스템의 각 사용자는 1 년에 21 일을 허용하고 이것의 주말도 공제합니다. 여기에 현재 코드가 있습니다.주말을 제외한 계산

SET @DateDiff = (DATEDIFF(Day,@StartDate,@EndDate) +1) 

는 위 날짜-DIFF 문이고 아래에 삽입 코드

BEGIN 
    INSERT INTO Holidays(EmployeeID, StartDate, EndDate, Duration,Status) 
    VALUES(@EmployeeID, @StartDate, @EndDate, @DateDiff,'PE') 

    UPDATE Employees 
    SET AnnualDaysHolidayAllowance = AnnualDaysHolidayAllowance - @DateDiff 
    WHERE ID = @EmployeeID 
    SELECT 'successful' AS result 
END 

이 사업 점검 및 규칙에 대한 더 많은 코드가 있지만 내가 시도하고 해결해야 할 유일한 부분입니다. 나는 상대적으로 코딩에 익숙하다. 가능한 경우 수정 사항을 이해할 수 있도록 설명을 남겨주세요, 감사합니다.

+0

가 RDBS 당신이 사용합니까 무엇? – Marboni

+2

주말에만 계정을 주거나 거주 지역에 "표준"공휴일도 고려해야합니까? 후자는 대개 주말, 표준 공휴일 및 조직과 관련된 기타 특별 이벤트에 대한 정보를 포함 할 수있는 달력 테이블을 생성하기위한 지침입니다. –

+0

RDBS는 나에게 MS-SQL과 같은 냄새를 풍깁니다 ... –

답변

1

게시 된 링크에 대한 해결책을 찾았습니다. 출처 : Count work days between two dates 대답 (나의 자신의 작품)

SET @DateDiff = (SELECT 
        (DATEDIFF(dd, @StartDate, @EndDate) + 1) 
        -(DATEDIFF(wk, @StartDate, @EndDate) * 2) 
        -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) 
        -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END))