Расчеты без выходных

Я пытаюсь создать приложение для бронирования отпуска, и оно работает с календарем пользовательского интерфейса JQuery. выбранная ими звезда и конечная дата передаются в SQL, где он помещает праздник в запрошенную таблицу. единственная проблема в том, что если я укажу дату начала и окончания, выходные дни не будут учитываться. у каждого пользователя системы есть 21 выходной день в календарном году, из которого также вычитаются выходные. вот текущий код.

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

Выше указан оператор date-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

Есть еще код для бизнес-проверок и правил, но это единственная часть, которую мне нужно исправить. Я относительно новичок в кодировании, поэтому, если возможно, оставьте объяснение, чтобы помочь мне понять исправление, спасибо.


person Kieranmv95    schedule 31.03.2014    source источник
comment
Какие RDBS вы используете?   -  person Marboni    schedule 31.03.2014
comment
Вам нужно учитывать только выходные или в вашем регионе есть стандартные праздники, которые также следует учитывать? В последнем случае это обычно указывает на создание таблицы календаря, которая может содержать информацию о выходных, стандартных праздниках и даже других особых событиях, характерных для вашей организации.   -  person Damien_The_Unbeliever    schedule 31.03.2014
comment
RDBS для меня пахнет MS-SQL...   -  person Martin Milan    schedule 31.03.2014
comment
Добавлен тег sql-server, потому что синтаксис очень похож на SQL Server.   -  person Gordon Linoff    schedule 31.03.2014
comment
Взгляните на эту статью - она ​​должна помочь... [Статья о переполнении стека] [1] [1]: stackoverflow.com/questions/252519/   -  person Martin Milan    schedule 31.03.2014
comment
@MartinMilan это MS-SQL   -  person Kieranmv95    schedule 31.03.2014
comment
@Damien_The_Unbeliever Мне нужно учитывать только выходные, бизнес-правила, ведущие к этому, имеют файл json, прикрепленный к полученным стандартным праздникам.   -  person Kieranmv95    schedule 31.03.2014


Ответы (1)


Нашел решение, оно было по ссылке. источник: Подсчет рабочих дней между двумя датами Ответ (не моя собственная работа)

    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))
person Kieranmv95    schedule 01.04.2014