Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

calculation error with Networkdays() function

Hello,

I have a problem with the networkdays () function.

This function takes into account holidays that are not within the calculation interval:

for example:

My date format is as follows:

SET DateFormat = 'DD-MM-YY';

The call of the function:

Networkdays ('16 -01-17 ', '19 -01-17') referrals 4, between 16 and 19 January there are 4 working days: the result is correct.

If now I set the {holiday} parameter by simulating a holiday on 20/01/2017 (so after the 19th)

Networkdays ('16 -01-17 ', '19 -01-17', '20 -01-17 ',' 20-01-17 ') references 3.

I have this problem every time my end date and the day before a holiday.

Have you ever encountered this problem and what solution have you applied?

Thank you for your help

1 Solution

Accepted Solutions
sunny_talwar

Look here

https://help.qlik.com/en-US/sense/3.2/Subsystems/Hub/Content/Scripting/DateAndTimeFunctions/networkd...

The above description sort of looks confusing, but I don't think you need start and end date... this seems to be working also

=NetWorkDays(MakeDate(2017, 01, 16), MakeDate(2017, 01, 20), MakeDate(2017, 01, 20))

Giving me 4, just like this is giving me 4

=NetWorkDays(MakeDate(2017, 01, 16), MakeDate(2017, 01, 19), MakeDate(2017, 01, 20))

View solution in original post

10 Replies
sunny_talwar

I was able to replicate the issue only if I added the same date twice in my Holiday... Why are you adding it twice? Is there a reason for adding it twice

Not applicable
Author

I apply ( but i certainly not understant) the help of the function:

start_dateThe start date to evaluate.
end_dateThe end date to evaluate.
holiday

Holiday periods to exclude from working days. A holiday period is stated as a start date and an end date, separated by commas.

in my mind, it was mandatory to specify a start and an end date even if it is the same.

sunny_talwar

Look here

https://help.qlik.com/en-US/sense/3.2/Subsystems/Hub/Content/Scripting/DateAndTimeFunctions/networkd...

The above description sort of looks confusing, but I don't think you need start and end date... this seems to be working also

=NetWorkDays(MakeDate(2017, 01, 16), MakeDate(2017, 01, 20), MakeDate(2017, 01, 20))

Giving me 4, just like this is giving me 4

=NetWorkDays(MakeDate(2017, 01, 16), MakeDate(2017, 01, 19), MakeDate(2017, 01, 20))

Not applicable
Author

thank for your help

sunny_talwar

No problem at all

swuehl
MVP
MVP

I can only hope that the description in the online help is wrong...

AFAIK, Networkdays() required to list optional holidays, a value per holiday date.

If this has changed, I guess it will break a lot of code.

But I guess it's just one of the wrong descriptions in the Help.

This is the old help text:

networkdays (start:date, end_date {, holiday})

Returns the number of working days (Monday-Friday) between and including start_date and end_date taking into account any optionally listed holidays. All parameters should be valid dates or timestamps.

Examples:

networkdays ('2007-02-19', '2007-03-01') returns 9

networkdays ('2006-12-18', '2006-12-31', '2006-12-25', '2006-12-26') returns 8

The new help tells instead:

holiday

Holiday periods to exclude from working days. A holiday period is stated as a start date and an end date, separated by commas.

Example: '25/12/2013', '26/12/2013'

You can specify more than one holiday period, separated by commas.

Example: '25/12/2013', '26/12/2013', '31/12/2013', '01/01/2014'

But looking at the specific values it's hard to tell if it is using interval start end dates or single holiday values.

But we can easily test it:

=NetWorkDays(MakeDate(2017, 01, 16), MakeDate(2017, 01, 19), MakeDate(2017, 01, 17), MakeDate(2017, 01, 19))

returns 2, not 1. So no period is used in holidays (edit: in QV11.20 SR12)

Not applicable
Author

That means, if we have several period of two weeks of days off  , we need to specify in the holidays list , for each period, each days of the two weeks.. .

swuehl
MVP
MVP

Right, that's how I understand the function.

ajayvermaida
Partner - Creator
Partner - Creator

Hi Rob,

can you please help me to calculating the time diff between two dates based on given points

1- First I have to calculate the time weekdays in between 7 Am to 11 PM excluding sat and sun . am using below script for this but prob is that when both the dates are weekend then its also calculate the time diff  .

if(not WildMatch(IssueStatus,'Pending') , (Interval((RangeMin(frac(IssueResolutionDate), MakeTime(23))- RangeMax(frac(IssueCreateDate), MakeTime(7)))+
( NetWorkDays(IssueCreateDate, IssueResolutionDate-1) * MakeTime(16)) ))) as TotalTime,

2- Second I have to calculate the time diff only Weekend Sat or Sun in between 10 Am to 4 PM . also if any dates is weekend and other one is weekday then it calculate the time based on diff time difference .

3- if any ticket open in the last month and closed in next month then it calculate the time as point 1 except if it comes on weekdays .

Please help me to find the correct result 

 

Thanks

Ajay