DATA Step, Macro, Functions and more

Display date diff as date

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 141
Accepted Solution

Display date diff as date

I have seen posts regarding use of the date diff function. 

 

1. I need to take a date say a variable called my_date, add 5 years to it  (ie the my_date is always hardcoded on the 1st, 9/1/2010)  5 years from that date is 9/1/2015

2  Now I need to take that resulting date of 9/1/2015 and add 14 days to display if as 9/15/2015 as I always want the 15th of the month

3  Finally I need to subtract 4 months and show a final my_date as 5/15/2015

 

 


Accepted Solutions
Solution
‎02-19-2016 01:04 PM
Super User
Posts: 19,771

Re: Display date diff as date

1. INTNX with Year -> intnx('year', date, 5, 's')

2. INTNX with Day (or just add 14)-> intnx('day', date, 14)

3. INTNX with Month -> intnx('month', date, -4, 's')

 

So, use the INTNX function to calculate your dates.

 

data want;
date1=mdy(9, 1, 2010);
date2=intnx('year', date1, 5, 's');
date3=intnx('day', date2, 14);
date4=intnx('month', date3, -4, 's');
format date: date9.;
run;

proc print;run;

 

 

 

 

View solution in original post


All Replies
Super User
Posts: 11,343

Re: Display date diff as date

Look at the function INTNX. Your requirements would require 3 calls to the function.

Solution
‎02-19-2016 01:04 PM
Super User
Posts: 19,771

Re: Display date diff as date

1. INTNX with Year -> intnx('year', date, 5, 's')

2. INTNX with Day (or just add 14)-> intnx('day', date, 14)

3. INTNX with Month -> intnx('month', date, -4, 's')

 

So, use the INTNX function to calculate your dates.

 

data want;
date1=mdy(9, 1, 2010);
date2=intnx('year', date1, 5, 's');
date3=intnx('day', date2, 14);
date4=intnx('month', date3, -4, 's');
format date: date9.;
run;

proc print;run;

 

 

 

 

Super User
Posts: 10,020

Re: Display date diff as date

data want;

date1=mdy(9, 1, 2010);

date2=intnx('year', date1, 5, 's');

date3=intnx('day', date2, 14);

date4=intnx('month', date3, -4, 's');

date5=intnx('month', date1, 5*12, 'm');

format date: date9.;

run;

 

proc print;run;

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 228 views
  • 2 likes
  • 4 in conversation