Forum Discussion
Calculate working hours between two dates
- Anonymous1 year ago
Hi assemomar
Working_Hours =
VAR StartDateTime = 'Table'[Created]
VAR EndDateTime = 'Table'[Resolved]
VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
VAR EndDate = DATE(YEAR(EndDateTime), MONTH(EndDateTime), DAY(EndDateTime))
VAR WorkStart = TIME(7, 0, 0)
VAR WorkEnd = TIME(17, 0, 0)
VAR TotalWorkHours =
SUMX(
FILTER(
ADDCOLUMNS(
CALENDAR(StartDate, EndDate),
"IsWorkday", WEEKDAY([Date], 2) <> 5
),
[IsWorkday] = TRUE
),
VAR CurrentDate = [Date]
VAR StartHour = IF(CurrentDate = StartDate, MAX(WorkStart, TIME(HOUR(StartDateTime), MINUTE(StartDateTime), 0)), WorkStart)
VAR EndHour = IF(CurrentDate = EndDate, MIN(WorkEnd, TIME(HOUR(EndDateTime), MINUTE(EndDateTime), 0)), WorkEnd)
RETURN MAX(0, DATEDIFF(StartHour, EndHour, MINUTE) / 60.0)
)RETURN ROUND(TotalWorkHours, 2)
- 1 year ago
Hiii assemomar
WorkingHours =
VAR StartDateTime = 'Issues'[Created]
VAR EndDateTime = 'Issues'[Resolved]-- Define working hours
VAR WorkdayStart = TIME(7, 0, 0) -- 07:00 AM
VAR WorkdayEnd = TIME(17, 0, 0) -- 05:00 PM-- Extract date and time components
VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
VAR EndDate = DATE(YEAR(EndDateTime), MONTH(EndDateTime), DAY(EndDateTime))VAR StartTime = TIME(HOUR(StartDateTime), MINUTE(StartDateTime), SECOND(StartDateTime))
VAR EndTime = TIME(HOUR(EndDateTime), MINUTE(EndDateTime), SECOND(EndDateTime))-- Count working days excluding Fridays (Friday = 5 in DAX)
VAR WorkingDays =
COUNTX(
FILTER(
ADDCOLUMNS(
CALENDAR(StartDate, EndDate),
"Weekday", WEEKDAY([Date], 2) -- 1=Monday, 7=Sunday (Friday=5)
),
[Weekday] <> 5
),
[Date]
)-- Adjust for first day
VAR FirstDayHours =
IF(
WEEKDAY(StartDate, 2) <> 5, -- If not Friday
DATEDIFF(
MAX(StartTime, WorkdayStart),
MIN(WorkdayEnd, EndTime),
MINUTE
) / 60,
0
)-- Adjust for last day
VAR LastDayHours =
IF(
WEEKDAY(EndDate, 2) <> 5, -- If not Friday
DATEDIFF(
WorkdayStart,
MIN(WorkdayEnd, EndTime),
MINUTE
) / 60,
0
)-- Adjust for full working days
VAR FullDayHours = (WorkingDays - 2) * 10 -- Each full working day contributes 10 hours-- Compute total working hours
VAR TotalWorkingHours = FirstDayHours + LastDayHours + FullDayHoursRETURN TotalWorkingHours
If this helps, I would appreciate your KUDOS!
Did I answer your question? Mark my post as a solution!
Hi assemomar
Working_Hours =
VAR StartDateTime = 'Table'[Created]
VAR EndDateTime = 'Table'[Resolved]
VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
VAR EndDate = DATE(YEAR(EndDateTime), MONTH(EndDateTime), DAY(EndDateTime))
VAR WorkStart = TIME(7, 0, 0)
VAR WorkEnd = TIME(17, 0, 0)
VAR TotalWorkHours =
SUMX(
FILTER(
ADDCOLUMNS(
CALENDAR(StartDate, EndDate),
"IsWorkday", WEEKDAY([Date], 2) <> 5
),
[IsWorkday] = TRUE
),
VAR CurrentDate = [Date]
VAR StartHour = IF(CurrentDate = StartDate, MAX(WorkStart, TIME(HOUR(StartDateTime), MINUTE(StartDateTime), 0)), WorkStart)
VAR EndHour = IF(CurrentDate = EndDate, MIN(WorkEnd, TIME(HOUR(EndDateTime), MINUTE(EndDateTime), 0)), WorkEnd)
RETURN MAX(0, DATEDIFF(StartHour, EndHour, MINUTE) / 60.0)
)
RETURN ROUND(TotalWorkHours, 2)
- assemomar1 year agoFrequent Visitor
Hi @prasannagoloju
Thank you for your good help, this code worked OK.
Appreciated.