Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Только на Поиск не отправляйте. Мне нужно без всяких выкрутасов определить количество рабочих дней между двумя датами, вернее имея количество календарных дней определить из них кол-во рабочих. Праздники не учитываются (нет их!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 11:29 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
xax_nvвернее имея количество календарных дней определить из них кол-во рабочих. Вот это точно некорректная постановка. Надо знать именно даты, а не количество. Точнее - количество плюс день недели первого. И тогда количество выходных состоит из двух слагаемых: Первое слагаемое - это выходные в целых неделях: (X \ 7) * 2, где X - количество календарных дней. Второе слагаемое зависит от: * количества дней в остатке, не уложившемся в целые недели: a = X mod 7 * для недели первого дня: b = weekday(первыйдень) - это число от 1 до 7, где 1 воскресенье, а 7 суббота Если a=0 или a+b<8, то второе слагаемое 0. Если b=1 или a+b=8, то второе слагаемое 1. Иначе второе слагаемое 2. Итого надо отнять от X оба слагаемых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 12:06 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Табличка для наглядности: дней\первыйпн 2вт 3ср 4чт 5пт 6сб 7вс 1 0 0000000 1 0000011 2 0000121 3 0001221 4 0012221 5 0122221 6 1222221 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 12:11 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Саныч, спасибо. Буду пробовать оформит все это одной строкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 12:18 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Что-то "...лыжи совсем не едут", а если первый день недели понедельник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 17:39 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Тогда: дней\первыйпн 1вт 2ср 3чт 4пт 5сб 6вс 7 0 0000000 1 0000011 2 0000121 3 0001221 4 0012221 5 0122221 6 1222221 Второе слагаемое зависит от: * количества дней в остатке, не уложившемся в целые недели: a = X mod 7 * для недели первого дня: b = weekday(первыйдень) - это число от 1 до 7, где 1 понедельник, а 7 воскресенье Если a=0 или a+b< 7 , то второе слагаемое 0. Если b= 7 или a+b= 7 , то второе слагаемое 1. Иначе второе слагаемое 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 21:30 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Кстати, в старом варианте воскресенье обрабатывалось неправильно. Сейчас вроде все в порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 22:57 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
А что нужно поправить в старом варианте, что бы воскресенье обрабатывалось правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 23:06 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
xax_nvА что нужно поправить в старом варианте, что бы воскресенье обрабатывалось правильно? Вместо Если a=0 или a+b<8, то второе слагаемое 0. Если b=1 или a+b=8, то второе слагаемое 1. написать так: Если a=0, то второе слагаемое 0. Если b=1 или a+b=8, то второе слагаемое 1. Если a+b<8, то второе слагаемое 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 23:11 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Большой-большой спасиб!!! Все срослось! Может-быть стОит поместить это в ФАК? Полезная вещь, ИМХО. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 23:26 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
xax_nvМожет-быть стОит поместить это в ФАК? Не думаю. Этот Question не настолько Frequently Asked... Зато я сейчас перенесу это из Аксесса в какой-нибудь более подходящий форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 23:45 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
Еще один вариант: http://sql.ru/forum/actualthread.aspx?tid=215367 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 14:10 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
когда то реализовывал нечто подобное на FireBird'е. Там надо было также получить дату, которая отличалась от заданой на 30 рабочих дней. Т.Е. считались как рабочие дни, так и те дни которые объявлены нерабочими(ПН-ПТ) и выходные (СБ и ВС), которые объявлялись рабочими(в случае переносов). Делал все через введение пары соответствующих табличек, которые заполнялись после утверждения рабочих дней на следующий год (эта информация бралась из "Консультанта") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 18:00 |
|
||
|
Рабочие дни
|
|||
|---|---|---|---|
|
#18+
у меня не работает такой вариант... wrkday- ((wrkday)/7*2 + CASE WHEN ((wrkday)%7)=0 THEN 0 WHEN (datepart(dw,da)=1) or ((wrkday)%7)+datepart(dw,da)=8 THEN 1 WHEN ((wrkday)%7)+datepart(dw,da)<8 THEN 0 else 2 END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33250030&tid=1346845]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 421ms |

| 0 / 0 |
