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: 
Anonymous
Not applicable

calculate difference between two dates

hi,
I am very new to Talend s/w. I have to create a job that calculates the difference between two dates and store the result as 0 & 1 calculated column
e.g. lets say we have a date column
date:                  derived_Col
12/21/2015          0(since it is the first date)
12/21/2014          0(when calculate 12/21/2015-12/21/2014=0 so it is 0)
12/21/2013          0(when calculate 12/21/2014-12/21/2013=0 so it is 0)   
11/21/2014          1(when calculate 12/21/2015-12/21/2014=1 so it is 1)
so I have to create a job that calculate the days difference and if the difference is greater than 365days than it should flag as 1 else 0.
Any urgent help on this will be highly appreciated.
Thanks in advance
Anurag Rai
Labels (2)
5 Replies
Anonymous
Not applicable
Author

Hi
I don't understand the logic here, use the current day minus the input data? If so, why it is 'when calculate 12/21/2014-12/21/2013=0 so it is 0' for the 3rd row? Can you please explain it?
Anonymous
Not applicable
Author

hi shong,
In this requirement we have to calculate difference between two consecutive dates(CurrDate-PrevDate) and if the difference is more than 365 days than it should flag as 1 ELSE 0.
The column is sorted on dates
Hope this helps, if you feel something is missing kindly let me know.
And thanks for the input
Anonymous
Not applicable
Author

Hi
Take a look at the tMemorizedRow component, this component memorizes the recorded data so you can access them in the next rows. To calculate the difference between two dates, use the built-in function TalendDate.diffDate(Date date1, Date date2, String dateType), you can read the source code of this function by expanding Repository--> Code--> Routines--> System--> TalendDate.
Let me know if you have any troubles to get it works.
Anonymous
Not applicable
Author

hi Shong,
Thanks for the reply.
I have implemented this already I used tJavaFlex to write a conditional expression to calculate the difference of two dates and store the return value in cnt variable which is already defined as integer but I am keep on getting Type mismatch: cannot convert from int to Long : I searched for this on forum bt I didn't get any definite answer on this.
And one more thing can we create a lead functionality using the tMemorizedRow component in the similar way we are creating a lag function? 
tJavaFlex Expression used :
if(!DRUG_ID_tMemorizeRows_1.equals(DRUG_ID_tMemorizeRows_1))
{
context.cnt=1;}
else
{
context.cnt=(TalendDate.diffDate(TalendDate.parseDate("MM/dd/yy", "RX_FILL_DATE_tMemorizeRows_1"),TalendDate.parseDate("MM/dd/yy","RX_FILL_DATE_tMemorizeRows_1"),"dd"));}

Thanks,
Anurag Rai
Anonymous
Not applicable
Author

Hi
The error occurs  on this line:
context.cnt=1;
The data type of context.cnt variable is long, you can't assign an int value to it, the code should be changed to:
context.cnt=1l;