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

How to get date interval overlapping

I have a table like this:



prova:
LOAD * INLINE [
mac_, from_, to_, value_
m1, 1/12/2005, 31/1/2006, 1000
m1, 1/12/2006, 31/1/2007, 2000
m2, 1/12/2005, 31/1/2006, 1500
];



I would like to know the fraction of each interval (from_->to_) in each year in order to calculate the total value_ amount for each year. In the example for mac_ = m1 and year = 2006: 1000*1/12 + 2000 * 1/12.

I think I can find the solution by using several nested if, but is there any ready-made function in qv which returns the overlapping of two time intervals? (i.e.: 1/1/2006-31/12/2006 vs 1/12/2005-31/1/2006)

Thanks in advance for your help



5 Replies
fernandotoledo
Partner - Specialist
Partner - Specialist

I didn´t get what you are trying to do exactly, but search QVs help for "Date and Time Function".

You may find a way to solve it in the script using INTERVALMATCH

Regards

Fernando

Not applicable
Author

thanks, I haven't found anything useful in date and time functions. The intervalmatch lets me link a single date with an interval while i need to find the intersection of two intervals

rwunderlich
Partner Ambassador/MVP
Partner Ambassador/MVP

I have a feeling I'm misunderstanding the question, but how about:

prova:

LOAD *,

Delta2006 / 365 as Pct2006

;

LOAD *,

RangeMax(RangeMin(to_, MakeDate(2006,12,31)) - RangeMax(from_, MakeDate(2006)) , 0) As Delta2006

;

LOAD * INLINE [

mac_, from_, to_, value_

m1, 1/12/2005, 31/1/2006, 1000

m1, 1/12/2006, 31/1/2007, 2000

m2, 1/12/2005, 31/1/2006, 1500

];



rwunderlich
Partner Ambassador/MVP
Partner Ambassador/MVP

I have a feeling I'm misunderstanding the question, but how about:

prova:

LOAD *,

Delta2006 / 365 as Pct2006

;

LOAD *,

RangeMax(RangeMin(to_, MakeDate(2006,12,31)) - RangeMax(from_, MakeDate(2006)) , 0) As Delta2006

;

LOAD * INLINE [

mac_, from_, to_, value_

m1, 1/12/2005, 31/1/2006, 1000

m1, 1/12/2006, 31/1/2007, 2000

m2, 1/12/2005, 31/1/2006, 1500

];



Not applicable
Author

is

date(max(total <mac_> from_))-date(min(total <mac_> to_))

what you're looking for?