(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
Quest Software. TOAD Professional Edition
ABBYY Lingvo x6 Многоязычная Домашняя версия, электронный ключ
ZBrush 4R6 Win Commercial Single License ESD
IBM Domino Utility Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Краткие описания программ и ссылки на них
Работа в Windows и новости компании Microsoft
Компьютерная библиотека: книги, статьи, полезные ссылки
Windows и Office: новости и советы
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100