Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подсчет количества рабочих дней между 2 датами  [new]
assmsk
Member

Откуда:
Сообщений: 173
Добрый день.
Можно ли как то подсчитать кол-во рабочих дней (не учитывать праздники, просто понедельник - пятница) если известны только дата начала и дата окончания периода. Понимаю как это сделать циклом или рекурсией, а вот возможно ли это сделать без циклов и табличных выражений используя только селект?
30 июл 18, 11:46    [21613879]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
assmsk,

а ваш sql знает когда у вас праздники?
30 июл 18, 11:50    [21613902]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
assmsk
Member

Откуда:
Сообщений: 173
Праздники не нужно учитывать
30 июл 18, 11:59    [21613946]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
assmsk
Праздники не нужно учитывать

а для этого не надо знать когда они?
30 июл 18, 12:06    [21613982]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
assmsk
Member

Откуда:
Сообщений: 173
Вопрос закрыт.
Нашел решение в FAQ

DECLARE
@d1 SMALLDATETIME,
@d2 SMALLDATETIME
SET @d1 = '1942-11-15'
SET @d2 = '1943-12-26'


SELECT DATEDIFF(DAY,@d1,@d2)+1-
(
DATEDIFF(WEEK,@d1,@d2)*2+
(CASE WHEN (DATENAME(dw,@d1) IN ('Sunday')) THEN 1 ELSE 0 END)+
(CASE WHEN (DATENAME(dw,@d2) IN ('Saturday')) THEN 1 ELSE 0 END)
)
30 июл 18, 12:10    [21614011]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
iiyama
Member

Откуда:
Сообщений: 642
assmsk,
при такой постановке навскидку
1. Таблица-календарь ( нужно таблица, знание select, count, where, between )
2. Кол-во дней - Кол-во выходных . Знание DATEDIFF, DATEPART, календаря (в неделе 7 дней), немного математики, + учесть разницу определения дней недели в разных локалях.
30 июл 18, 12:10    [21614013]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет количества рабочих дней между 2 датами  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 2006
ответ складывается из дня недели первой даты, дня недели второй и количества полных недель между.
30 июл 18, 12:18    [21614076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить