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

возник следующий вопрос: есть таблица со структурой:
id, задача, когда_возникла, когда_сделана

нужно получить время, которое затрачено на решение задачи, то есть поле когда_сделана минус поле
когда_возникла

но проблема в том, что если задача возникает в нерабочее время, то из времени потраченного на решение задачи нужно вычесть время до начала рабочего дня (рабочий день начинается в 9:00). то есть:
1, подмести пол, 10:00, 12:00 - результат 2 часа
2, вынести мусор, 03:00, 10:00 - результат 1 час (так как начал в девять)

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

спасибо!
29 окт 09, 14:20    [7856370]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Glory
Member

Откуда:
Сообщений: 104760
ddd123


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

Выходные и праздники в Республике Конго тоже учитывать ?
29 окт 09, 14:21    [7856380]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
автор
но проблема в том, что если задача возникает в нерабочее время, то из времени потраченного на решение задачи нужно вычесть время до начала рабочего дня (рабочий день начинается в 9:00). то есть:
1, подмести пол, 10:00, 12:00 - результат 2 часа
2, вынести мусор, 03:00, 10:00 - результат 1 час (так как начал в девять)


Посмотрите в сторону CASE - http://msdn.microsoft.com/ru-ru/library/ms181765.aspx

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


ну тут, для начала нужно решить, по какому правилу собственно определять праздники :)
30 окт 09, 00:50    [7859521]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Denis Reznik
автор
но проблема в том, что если задача возникает в нерабочее время, то из времени потраченного на решение задачи нужно вычесть время до начала рабочего дня (рабочий день начинается в 9:00). то есть:
1, подмести пол, 10:00, 12:00 - результат 2 часа
2, вынести мусор, 03:00, 10:00 - результат 1 час (так как начал в девять)


Посмотрите в сторону CASE - http://msdn.microsoft.com/ru-ru/library/ms181765.aspx

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


ну тут, для начала нужно решить, по какому правилу собственно определять праздники :)
А чего тут решать? Тем более, что праздники то и дело переносятся.
Надо создать и заполнить таблицу, каждая строка которой относится к одному дню и содержит всю необходимую информацию
об этом дне ((праздник|выходной)/начало рабочего времени/обеденный перерыв и т.д.)
IMHO, конечно
30 окт 09, 09:12    [7859824]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
iap
Denis Reznik
автор
но проблема в том, что если задача возникает в нерабочее время, то из времени потраченного на решение задачи нужно вычесть время до начала рабочего дня (рабочий день начинается в 9:00). то есть:
1, подмести пол, 10:00, 12:00 - результат 2 часа
2, вынести мусор, 03:00, 10:00 - результат 1 час (так как начал в девять)


Посмотрите в сторону CASE - http://msdn.microsoft.com/ru-ru/library/ms181765.aspx

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


ну тут, для начала нужно решить, по какому правилу собственно определять праздники :)
А чего тут решать? Тем более, что праздники то и дело переносятся.
Надо создать и заполнить таблицу, каждая строка которой относится к одному дню и содержит всю необходимую информацию
об этом дне ((праздник|выходной)/начало рабочего времени/обеденный перерыв и т.д.)
IMHO, конечно


+1
30 окт 09, 09:16    [7859839]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Supra93
Member

Откуда:
Сообщений: 8174
+ сокращенные дни.
+ рабочий график в подразделениях зачастую различается...
30 окт 09, 09:16    [7859840]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Supra93
+ сокращенные дни.
+ рабочий график в подразделениях зачастую различается...
+ отпуск (в том числе без сохранения содержания)

Полноценная программа "Отдел кадров" должна просто быть.
Ведь у работника в трудовом договоре могут быть прописаны и особые условия работы.
30 окт 09, 09:35    [7859896]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Вот наброски
30 окт 09, 10:03    [7860016]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31182
ddd123
здравствуйте!

возник следующий вопрос: есть таблица со структурой:
id, задача, когда_возникла, когда_сделана

нужно получить время, которое затрачено на решение задачи, то есть поле когда_сделана минус поле
когда_возникла

но проблема в том, что если задача возникает в нерабочее время, то из времени потраченного на решение задачи нужно вычесть время до начала рабочего дня (рабочий день начинается в 9:00). то есть:
1, подмести пол, 10:00, 12:00 - результат 2 часа
2, вынести мусор, 03:00, 10:00 - результат 1 час (так как начал в девять)

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

спасибо!
Во первых, нужно различать время, когда она возникла, и когда начала (начнёт) выполняться.

Во вторых, рабочее и нерабочее время у разных людей разное. Хотя бы потому, что человек может заболеть или уёти в отпуск.
30 окт 09, 11:45    [7860913]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
ddd123
Guest
пытаюсь переварить..

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

У меня есть дата возникновения задачи и дата её конца.
Хотелось бы запросом получить кол-во рабочих минут, затраченных на ее решение исходя из таблицы с нерабочими промежутками

вот как такое лучше реализовать?

спасибо за помощь..
2 ноя 09, 11:23    [7869637]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Glory
Member

Откуда:
Сообщений: 104760
ddd123
пытаюсь переварить..

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

У меня есть дата возникновения задачи и дата её конца.
Хотелось бы запросом получить кол-во рабочих минут, затраченных на ее решение исходя из таблицы с нерабочими промежутками

вот как такое лучше реализовать?

спасибо за помощь..

Чего уж проще из разницы в минутах двух дат вычесть продолжительность в минутах нерабочих дат, которые попадают в этот период. Простой join
2 ноя 09, 11:50    [7869832]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
ddd123
Guest
уж простите за непонятливость... а как в запросе определить сумму дат, которые попадают в период ?
2 ноя 09, 16:05    [7872083]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
Glory
Member

Откуда:
Сообщений: 104760
ddd123
уж простите за непонятливость... а как в запросе определить сумму дат, которые попадают в период ?

projects join holidays on holidays.date between projects.begindate and projects.enddate
2 ноя 09, 16:13    [7872137]     Ответить | Цитировать Сообщить модератору
 Re: Разница времени с учетом нерабочего времени и выходных  [new]
ddd123
Guest
Мда, либо все сложнее, чем может показаться, либо скл это не мое

Вот еще раз.
Есть таблица с промежутками НЕрабочего времени (worktime):
recid time_begin time_end
3 2009-11-02 00:00:00.000 2009-11-02 09:00:00.000
4 2009-11-02 14:00:00.000 2009-11-02 15:00:00.000
5 2009-11-02 18:00:00.000 2009-11-02 23:59:59.990

Есть таблица с заданием (tasks):
id time_begin time_end name
1 2009-11-02 12:30:00.000 2009-11-02 15:30:00.000 мыл полы

В результате нужно получить строку

1 мыл полы 120


Получить время выполнения задачи без учета промежутков легко:
select datediff(minute,time_begin,time_end) from tasks

Можно получить интервалы, в которые входит это задание (упрощенно):
select worktime.time_begin
from worktime, tasks
where
(tasks.time_begin between worktime.time_begin and worktime.time_end)
or (tasks.time_end between worktime.time_begin and worktime.time_end)

А что дальше?

PS Отпуска, отгулы и прогулы, беременности и больничные не учитываем.
3 ноя 09, 13:24    [7876476]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить