BookmarkSubscribeRSS Feed
My_SAS
Calcite | Level 5

actually i am having a joining date i want to find how many years he was wroking to till date

data l;
sdate='12jan2010'd;
enddate=today()
Tot=yrdif(sdate, edate, 'ACT/365');
run;

But i wnat the output like this how many years,months and days to till date.

sdate          Years  Months days
12jan2010      2      2            3

1 REPLY 1
Keith
Obsidian | Level 7

Here is a link to a useful article on the SAS website on how to calculate age from date of birth.

http://support.sas.com/kb/24/808.html

I've used this technique to answer your question, first of all I've calculated the total number of complete months between the 2 dates and then used this to get the values you need (years is the integer part of total_months/12, months is the remainder of total_months/12, days is the difference between the end date and the start date advanced by total_months.

data l;

format sdate enddate date9.;

sdate='12jan2010'd;

enddate=today();

_totmonths=intck('month',sdate,enddate)-(day(enddate)< day(sdate));

years=floor(_totmonths/12);

months=mod(_totmonths,12);

days=enddate-intnx('month',sdate,_totmonths,'S');

drop _totmonths;

run;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1037 views
  • 0 likes
  • 2 in conversation