I would like to have the result of the following codes in year and days format.
years=9.1917808219 I want to see this as 9 year 191 days.
data dt;
a=today()-'01AUG2006'd;
b=a/365;
run;
Please help me.
I'm confused because 9.1917808219 is not 9 years 191 days.
It is 9 years and .1917808219 years (which is 70 days)
So please be more specific about what output you want.
I understand PaigeMiller here, its not clear what you want. From your given example you can reverse the formula you have given:
data dt; a=today()-'01AUG2006'd; b=a/365; c=b*365; d=c+"01AUG2006"d; format d date9.; run;
So b contains your 9.191... I fyou then multiply that by 365 and add the original base date back on you should arrive at today. However note that doing this whole a year is 365 days, rather than using proper interval functions is risky and might yield incorrect results. Why do you need to do this, have they not supplied the original dates used in the calculation as they should have.
That number (9.1917808219 I) must come from outside SAS as time intervals are not measured in years within SAS. Knowing where that time interval comes from would help finding a precise SAS equivalent.
If you execute the code shown in the original post, the number 9.1917808219 comes from the lines of code
a=today()-'01AUG2006'd;
b=a/365;
It's not clear to me what the user wants to do with this number, which (s)he misinterprets as 9 years 191 days
Oh! I finally get it. You'll get exact numbers with SAS interval functions:
data dt;
years = intck("YEAR", '01AUG2006'd, today(), 'CONTINUOUS');
days = intck("DAY", intnx("YEAR", '01AUG2006'd, years, 'SAME'), today());
put (_ALL_) (=);
run;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.