Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
pranaview
Creator III
Creator III

How to calculate number of weekends/holidays between two successive dates in a column

Hi Guys,

I'm kinda stuck with this problem which is like the last step to wrap up the business logic for my app.

I have to calculate time difference for a Datetime column for successive dates. For example

RequestIDStatusCreationDateDifference
1Originator

9/5/2018 12:18

-
1Processor9/10/2018 12:20Diff
1Validation9/10/2018 17:20Diff
1Closed9/12/2018  9:20Diff

Now when I take the difference for first and second date, I'll get a weekend(sat and sun) i.e. 48 hours i need to deduct from the total difference. Now this is just one example, there can be n number of weekends or holidays in between . Can anyone help me write the logic where I can get the exact number of weekends/holidays in between two successive dates in the column then I can just multiply it with 24 to get total hours to deduct.


I tried to use NetworkDays() function but it didn't work out as I wanted it to or may be I could not use it properly to get the desired outcome.


Any help or suggestions will be hugely appreciated. I need to get this done to get over the line as this is quite obviously a blocker for me.


Thanks in advance.


P.S. I'm working in Qlik Sense but I guess there won't be any difference in logic in QlikView.


Pranav

1 Reply
avkeep01
Partner - Specialist
Partner - Specialist

Hi Pranav, I needed to change the dates and the formats a bit. I changed the data so that multiple weekends are inlcuded. I created a date from and date till for every requestid with the previous function. Then I filled the dates between and flagged them when they are Saturday or Sunday. Then I summed the flags per requestID

Maybe you need a little adjustments, But you can try this script.

temp01:

LOAD

RequestID,

Status,

DATE(CreationDate) AS CreationDate,

DATE(IF(RequestID=PREVIOUS(RequestID),PREVIOUS(CreationDate),CreationDate)) AS Prev_CreationDate

INLINE [

RequestID, Status, CreationDate

1, Originator, 05-09-2018 12:18:00

1, Processor, 06-09-2018 12:20:00

1, Validation, 12-09-2018 17:20:00

1, Closed, 18-09-2018 09:20:00

];


temp02:

NOCONCATENATE LOAD

RequestID,

Status,

CreationDate,

Prev_CreationDate,

DATE(Prev_CreationDate+(ITERNO()-1)) AS Date,

IF(MATCH(WEEKDAY(DATE(Prev_CreationDate+(ITERNO()-1))),'Sa','Su')>0,1) AS NoOfWeekendDays

RESIDENT temp01

WHILE Prev_CreationDate+(ITERNO()-1) <= CreationDate;


DROP TABLE temp01;


Final:

NOCONCATENATE LOAD

RequestID,

Status,

CreationDate,

SUM(NoOfWeekendDays) AS NoOfWeekendDays

RESIDENT temp02

GROUP BY RequestID, Status, CreationDate;

DROP TABLE temp02;