Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Connect 2026 Agenda Now Available: Explore Sessions
cancel
Showing results for 
Search instead for 
Did you mean: 
eryılmaz
Contributor
Contributor

WorkingHour halfdays calc.

Hi Qlikers,

I can  calculate the business working hours between two Dates. But ı can not calculate half days working hours 

How ı can calculate half days? please help me 

 

 

// Set the start and end hour of the day in 24 hour format

Full Day
LET vStartHour = 9;
LET vEndHour = 18;
LET vWorkingHourPerDay = $(vEndHour) -$(vStartHour);

Half Day

LET vStartHour = 9;
LET vEndHour = 13;
LET vWorkingHourPerDay = $(vEndHour) -$(vStartHour);

Half -Holidays:
LOAD Concat(chr(39)&Holidays&chr(39),',') as Holidays Inline [
Holidays
19/08/2019
30/09/2019
29/10/2019

Holidays:
LOAD Concat(chr(39)&Holidays&chr(39),',') as Holidays Inline [
Holidays
08/08/2019
09/08/2019
17/08/2019
];

LET vHolidays = Peek('Holidays',0,'Holidays');

Data:
LOAD *,
rangesum(Business_Hrs_Without_Overtime,Overtime) as Business_Hrs_With_Overtime;
LOAD *,
rangesum(round(rangesum(
NetWorkDays(START_TIME+1,END_TIME-1,$(vHolidays)) * MakeTime($(vWorkingHourPerDay)), // In between hours
if(NetWorkDays(END_TIME,END_TIME,$(vHolidays)),
Rangemin(rangemax(frac(END_TIME),maketime($(vStartHour))),maketime($(vEndHour)))-
Rangemax(rangemin(frac(END_TIME),maketime($(vStartHour))),maketime($(vStartHour))),0), // working hours last day
if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)),
Rangemin(rangemax(frac(START_TIME),maketime($(vEndHour))),maketime($(vEndHour)))-
Rangemax(rangemin(frac(START_TIME),maketime($(vEndHour))),maketime($(vStartHour))),0), // working hours first day
if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)) and floor(START_TIME)=floor(END_TIME),-MakeTime($(vWorkingHourPerDay))) // If same day then correct the hours
)*24,0.01)) AS Business_Hrs_Without_Overtime,

rangesum(if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)) ,
round(rangesum(if(frac(START_TIME)<maketime($(vStartHour)),maketime($(vStartHour))-frac(START_TIME),0),
if(frac(END_TIME)>maketime($(vEndHour)),frac(END_TIME)-maketime($(vEndHour)),0))*24,0.01))) as Overtime ; // Overtime

LOAD *,
timestamp(timestamp#(StartTime,'MM/DD/YYYY hh:mm:ss TT')) as START_TIME,
timestamp(timestamp#(EndTime,'MM/DD/YYYY hh:mm:ss TT')) as END_TIME
Inline [
TicketNo,StartTime, EndTime
1, 8/25/2019 3:00:00 PM, 8/27/2019 6:00:00 PM
2, 8/16/2019 10:00:00 AM, 8/25/2019 1:00:00 PM

3, 8/19/2019 10:00:00 AM, 8/25/2019 1:00:00 PM];

Labels (1)
0 Replies