Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.09.2005, 11:29
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
Только на Поиск не отправляйте. Мне нужно без всяких выкрутасов определить количество рабочих дней между двумя датами, вернее имея количество календарных дней определить из них кол-во рабочих. Праздники не учитываются (нет их!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 12:06
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#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:11
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#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:18
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
Саныч, спасибо. Буду пробовать оформит все это одной строкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 17:39
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
Что-то "...лыжи совсем не едут", а если первый день недели понедельник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 21:30
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#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, 22:57
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#18+
Кстати, в старом варианте воскресенье обрабатывалось неправильно. Сейчас вроде все в порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 23:06
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
А что нужно поправить в старом варианте, что бы воскресенье обрабатывалось правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 23:11
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#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:26
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
Большой-большой спасиб!!! Все срослось! Может-быть стОит поместить это в ФАК? Полезная вещь, ИМХО. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2005, 23:45
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#18+
xax_nvМожет-быть стОит поместить это в ФАК? Не думаю. Этот Question не настолько Frequently Asked... Зато я сейчас перенесу это из Аксесса в какой-нибудь более подходящий форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2005, 14:10
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#18+
Еще один вариант: http://sql.ru/forum/actualthread.aspx?tid=215367 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2005, 18:00
|
|||
|---|---|---|---|
Рабочие дни |
|||
|
#18+
когда то реализовывал нечто подобное на FireBird'е. Там надо было также получить дату, которая отличалась от заданой на 30 рабочих дней. Т.Е. считались как рабочие дни, так и те дни которые объявлены нерабочими(ПН-ПТ) и выходные (СБ и ВС), которые объявлялись рабочими(в случае переносов). Делал все через введение пары соответствующих табличек, которые заполнялись после утверждения рабочих дней на следующий год (эта информация бралась из "Консультанта") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.11.2005, 14:29
|
|||
|---|---|---|---|
|
|||
Рабочие дни |
|||
|
#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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&tablet=1&tid=1346845]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 408ms |

| 0 / 0 |
