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

Откуда:
Сообщений: 8
Доброго времени суток.
Подскажите что можно предпринять в такой ситуации
Есть Таблица в которой хранится 2 поля с Датами - "Плановое время выполнения работ" и "Фактическое время выполнение работ". Необходимо от значения прописанного в поле "Фактическое время выполнение работ" отнять значение которое хранится в поле "Плановое время выполнения работ" при условии что "Фактическое время выполнение работ" > "Плановое время выполнения работ" и на выходе должно получится количество рабочих часов в формате ЧЧ:ММ.
Так же есть календарь (во вложении) в котором прописан 9-ти часовой рабочий день с 9:00 до 18:00. Суббота и Воскресенье выходные.
Rак это можно реализовать?
11 ноя 14, 00:26    [16825614]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Можно например использовать специальный тип данных - time.
11 ноя 14, 05:38    [16825886]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Bizkit,

Вам до сих пор никто не написал, как это сделать? Удивительно.

SELECT GETDATE(), CONVERT(CHAR(16), GETDATE(), 121), RIGHT(CONVERT(CHAR(16), GETDATE(), 121), 5)
11 ноя 14, 15:19    [16828810]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
BOL
11 ноя 14, 15:29    [16828871]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Вам до сих пор никто не написал, как это сделать? Удивительно.

SELECT GETDATE(), CONVERT(CHAR(16), GETDATE(), 121), RIGHT(CONVERT(CHAR(16), GETDATE(), 121), 5)

А GETDATE() у вас тут это разность между "Фактическое время выполнение работ" и "Плановое время выполнения работ" ?
11 ноя 14, 15:31    [16828888]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Glory
a_voronin
Вам до сих пор никто не написал, как это сделать? Удивительно.

SELECT GETDATE(), CONVERT(CHAR(16), GETDATE(), 121), RIGHT(CONVERT(CHAR(16), GETDATE(), 121), 5)

А GETDATE() у вас тут это разность между "Фактическое время выполнение работ" и "Плановое время выполнения работ" ?


тогда так?
CAST(DateDiff(minute, date1, date2) / 60 AS CHAR(2)) + ':' + CAST((minute, date1, date2) % 60 AS CHAR(2))
11 ноя 14, 15:59    [16829125]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Ребят, хочу обратить ваше внимание, что нужно не просто разница часов, а разница Рабочих часов. Т.е. в субботе и в воскресенье 48 часов, нов них ни одного рабочего.
11 ноя 14, 17:32    [16830058]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bizkit
хочу обратить ваше внимание, что нужно не просто разница часов, а разница Рабочих часов. Т.е. в субботе и в воскресенье 48 часов, нов них ни одного рабочего.

Т.е. вы не можете просто посчитать эти часы ?
Или отобразить их в нужном формате ?
11 ноя 14, 17:34    [16830082]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Не могу посчитать
11 ноя 14, 17:36    [16830107]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bizkit
Не могу посчитать

И в чем проблема выбрать из "есть календарь (во вложении)" записи в нужном диапазоне и сложить их рабочие часы ?
11 ноя 14, 17:37    [16830118]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Glory
Bizkit
Не могу посчитать

И в чем проблема выбрать из "есть календарь (во вложении)" записи в нужном диапазоне и сложить их рабочие часы ?


Нет. Есть таблица с двумя столбцами
targcompdate - Плановая дата выполнение и actfinish - Фактическая дата выполнения.
и необходимо отнять от значения столбца actfinish значение столбца targcompdate и получить количество Рабочих часов. Т.е отобразить на сколько рабочего времени просрочены работы.
т.е. если actfinish = 2014.11.11 9:00 а targcompdate = 2014.11.10 17:00, то результатом должно получится 1 час, так как рабочий день с 9:00 по 18:00.
11 ноя 14, 17:46    [16830180]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bizkit
Нет. Есть таблица с двумя столбцами
targcompdate - Плановая дата выполнение и actfinish - Фактическая дата выполнения.
и необходимо отнять от значения столбца actfinish значение столбца targcompdate и получить количество Рабочих часов. Т.е отобразить на сколько рабочего времени просрочены работы.
т.е. если actfinish = 2014.11.11 9:00 а targcompdate = 2014.11.10 17:00, то результатом должно получится 1 час, так как рабочий день с 9:00 по 18:00.

И что такое тогда "Так же есть календарь (во вложении) в котором прописан 9-ти часовой рабочий день с 9:00 до 18:00. Суббота и Воскресенье выходные." ?
11 ноя 14, 17:47    [16830194]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Bizkit
т.е. если actfinish = 2014.11.11 9:00 а targcompdate = 2014.11.10 17:00, то результатом должно получится 1 час, так как рабочий день с 9:00 по 18:00.

вы больше ничего не хоите уточнить в условии задачи ?
11 ноя 14, 17:47    [16830196]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Glory,

имеется в виду что также есть таблица календарь, в которой прописаны рамки рабочего дня и выходные.
11 ноя 14, 17:52    [16830240]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

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

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

Тогда еще раз
Что вам мешает выбрать из этой таблицы-календаря все рабочие дни/часы в диапазоне actfinish = 2014.11.11 9:00 а targcompdate = 2014.11.10 17:00, и просуммировать их ?
11 ноя 14, 17:54    [16830255]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Glory,

Мешает то что эти таблицы ни как между собой не связаны
11 ноя 14, 19:08    [16830715]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

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

Мешает то что эти таблицы ни как между собой не связаны

Да что вы говорите ?
Разве поля actfinish/targcompdate одной таблицы не являются условиями фильтрации из другой таблицы ?
11 ноя 14, 21:11    [16831306]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Нет
11 ноя 14, 22:30    [16831601]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

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

ответ неверный
11 ноя 14, 22:32    [16831611]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Bizkit
Member

Откуда:
Сообщений: 8
Glory,

каким образом в таком случае связаны эти 2 таблицы? у них нет общих атрибутов.
11 ноя 14, 22:39    [16831633]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bizkit
каким образом в таком случае связаны эти 2 таблицы? у них нет общих атрибутов.

Есть. Это дата.
11 ноя 14, 23:18    [16831739]     Ответить | Цитировать Сообщить модератору
 Re: количество рабочих часов просрочки в формате ЧЧ:ММ  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
Зависит от того, как организована у Вас таблица календарь.

declare @t1 table
(
actfinish datetime,
targcompdate datetime)

declare @t2 table
(
W_day date,
HR_begin time(0),
HR_end time(0)
)

insert @t1
Select '2014.11.11 9:00','2014.11.10 17:00'

insert @t2
Select '2014.11.10','08:00','17:00'
union all
Select '2014.11.11','08:00','17:00'
union all
Select '2014.11.12','08:00','17:00'

Select 
	sum(case 
		when W_day=cast(targcompdate as date) then datediff(hour,targcompdate,cast(W_day as datetime)+HR_end) 
		when W_day=cast(actfinish as date) then datediff(hour,cast(W_day as datetime)+HR_begin,actfinish) 
		else datediff(hour,cast(W_day as datetime)+HR_begin,cast(W_day as datetime)+HR_end)
	end ) WorkHours
from @t2
inner join @t1 on W_day>=cast(targcompdate as date) and W_day<=cast(actfinish as date)
12 ноя 14, 11:09    [16832906]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить