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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
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