(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

DocsVision: T-SQL Скрипт для рассчета количества рабочего времени между двумя датами с учетом бизнес-календаря (с изменениями от 15.10)

Александр Среда

Для решения задачи расширенного отчета мне требовалось вычислять рабочее время потраченное сотрудником на поставленную ему задачу в днях.

Попробовал использовать уже имеющиеся решения этой задачи, но столкнулся с небольшими проблемами, поэтому написал свой вариант решения.

На мой взгляд, получилось совсем не плохо :-)

Первый вариант пришлось немного изменить (для тех кто уже успел с ним ознакомиться), так как для расчета необходимо было вызывать процедуру, а не функцию, что осложняло использование решения в запросах для построения отчетов.

И так, решение теперь состоит из 4 функций:

1. Функция расчета рабочего времени в первый день заданного периода
2. Функция расчета общего рабочего времени в первый день заданного периода
3. Функция расчета рабочего времени в последний день заданного периода
4. Функция расчета рабочего времени за период

Есть несколько допущений:

1. Если дата старта не задана, то она приравнивается к началу текущего дня
2. Если дата окончания не задача, то она приравнивается к текущему моменту времени
3. Если не указан идентификатор бизнес-календаря, то выполняется поиск первого в системе.
4. Если календарей нет в системе, то календарем по умолчанию считается рабочий день с 09 до 18 с перерывом на обед с 13 до 14 пять дней в неделю

При запуске процедуры расчета рабочего времени есть параметры:

@OnlyFullDay:
1 - учитываются только полные рабочие дни, т.е. без первого рабочего дня и последнего;
0 - в дополнение к полным дням учитываются первый и последний день, если в них было рабочее время

@Mode:
1 - результат возвращается в минутах (параметр @OnlyFullDay тогда игнорируется)
0 - результат в днях

Функция возвращает количество рабочих дней или количество рабочего времени в минутах.

Рабочее время вычисляется за любой промежуток времени, в том числе, при переходе между годами.

У себя тестил на различных вариантах настроек календаря и без него - работает.

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 20.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Panda Global Protection - ESD версия - на 1 устройство - (лицензия на 1 год)
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER LICENSE + SW SUBSCRIPTION & SUPPORT 12 MONTHS
Allround Automation PL/SQL Developer Single user license
ESET NOD32 Антивирус на 1 год для 3ПК или продление на 20 месяцев
SAP Crystal Reports XI R2 Dev 2006 INTL WIN NUL License (Version 11)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Вопросы и ответы по MS SQL Server
Краткие описания программ и ссылки на них
Компьютерная библиотека: книги, статьи, полезные ссылки
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100