Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет количества рабочих часов между 2 я датами / 2 сообщений из 2, страница 1 из 1
29.11.2018, 08:46
    #39740198
plosten
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет количества рабочих часов между 2 я датами
Всем привет. Есть функция которая рассчитывает рабочие часы между 2 я датами :
USE [ERPReports]
GO
/****** Object: UserDefinedFunction [dbo].[f_get_CountWorksHours] Script Date: 28.11.2018 15:30:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER FUNCTION [dbo].[f_get_CountWorksHours]
(
@startdate Datetime2,
@enddate Datetime2
)
RETURNS TABLE AS RETURN
(
SELECT
(DATEDIFF(mi, @startdate, @enddate))/1440 +1
-(DATEDIFF(wk, @startdate, @enddate) * 2)
-(CASE WHEN DATENAME(dw, @startdate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @enddate) = 'Saturday' THEN 1 ELSE 0 END)
As NoOfWeekDays

)

На вход подается интервал с датами и временем, в которые отсутствовал сотрудник. Не устраивает то, что она выдает целые дни.
Например сотрудник отсутствовал один день полдня , другой 2 часа а функция считает что он отсутствовал 2 дня. как можно ее переделать, чтобы в итоге из всего интервала dj первых учитывались только рабочие дни во вторых считалось именно время отсутствия по часам. Пример интервала
Отсутствующий DateTimeStart DateTimeFinish
Елена Тищенко 2018-11-19 08:00:00.000 2018-11-19 19:00:00.000
Елена Тищенко 2018-11-20 17:15:00.000 2018-11-20 18:15:00.000
Елена Тищенко 2018-11-21 17:45:00.000 2018-11-21 18:30:00.000
Елена Тищенко 2018-11-22 17:30:00.000 2018-11-22 18:30:00.000
то есть по идее функция должна вернуть в интервале с '2018-11-19 00:01:06.000' по '2018-11-24 00:01:06.000' что то около 1.3 дня
Рабочий день считать в интервале с 8 до 18.00. и праздники не учитывать

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
29.11.2018, 11:39
    #39740273
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет количества рабочих часов между 2 я датами
plosten,

например ... /CAST(1440 as money)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет количества рабочих часов между 2 я датами / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]