Хранимая процедура SQL: рабочие часы - PullRequest
1 голос
/ 19 мая 2010

Как я могу создать хранимую процедуру, которая принимает даты начала и окончания (например, 1 апреля - 30 апреля

1.) Получите рабочие дни, включая субботу x (значение). +
2.) Получить праздники х (значение)

и вернуть сумму.

Я новичок в этом, я думаю, это будет функция tsql. хмм.

любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Самое простое решение этой проблемы - создать таблицу Календаря, содержащую значение для каждого дня, который вы можете рассмотреть. Затем вы можете добавить столбцы, которые указывают, будет ли это рабочий день или праздник. При этом проблема становится тривиальной:

Select ..
From Calendar
Where IsBusinessDay = 1
   And Calendar.[Date] Between '2010-04-01' And '2010-04-30'

Если вы хотите подсчитать количество дней, вы можете сделать:

Select Sum( Case When IsBusinessDay = 1 Then 1 Else 0 End ) As BusinessDayCount
    , Sum( Case When IsHoliday = 1 Then 1 Else 0 End ) As HolidayCount
From Calendar
Where Calendar.[Date] Between '2010-04-01' And '2010-04-30'
0 голосов
/ 19 мая 2010

Во-первых, вам нужно будет сохранить все праздники в независимой таблице (Рождество, Пасха, Новый год и т. Д. С соответствующими датами (обычно в полночь));

Во-вторых, вам нужно будет сгенерировать во временную таблицу, возможно, даты рабочих дней, затем она исключит даты, содержащиеся в таблице "Праздники".

В-третьих, вы можете установить рабочее время на эти даты в зависимости от того, какой сегодня день, если у вас разные рабочие часы в другой день.

Это алгоритм для вас, чтобы найти соответствующую реализацию кода.

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...