data ds;
input company $ manufac_date $ mmddyy10. ;
format manufac_date mmddyy10.;
datalines;
Hynduai 24Oct2001
Maruthi 12Mar2008
scoda 02Aug2007
Tata 16Jun2020
;
run;
data ds1;
set ds;
Years=intck('Year',manufac_date,today());
Months=intck('Month',manufac_date,today());
Days=intck('Day',manufac_date,today());
format Years Months Days manufac_date today mmddyy10.;
proc print;
run;
I want vehicle manufacture information till today
The INTCK function returns the number of intervals, not a date, so it makes no sense using a date format.
BTW since dates are counts of days (a fact you know quite well by now), the last function call is unnecessary and can be replaced by a simple subtraction:
days = today() - manufac_date;
which will be slightly faster.
data ds1;
set ds;
days = today() - manufac_date;
Years=intck('Year',manufac_date,today());
Months=intck('Month',manufac_date,today());
/* Days=intck('Day',manufac_date,today()); */
format Years Months Days manufac_date today mmddyy10.;
proc print;
run;
I got output like this
By now, @BrahmanandaRao , you should know you need dates to be numeric if you are going to do mathematical calculations (such as, in your case, subtraction). In your data set, your variable MANUFAC_DATE is character. Won't work. Fix the data set.
data ds;
input company $ manufac_date date9. ;
format manufac_date date9.;
datalines;
Hynduai 24Oct2001
Maruthi 12Mar2008
scoda 02Aug2007
Tata 16Jun2020
;
run;
data ds1;
set ds;
Years=intck('Year',manufac_date,today, today());
Months=intck('Month',manufac_date,today());
Days=intck('Day',manufac_date,today());
format Years Months Days manufac_date today date9.;
proc print;
run;
I believe @Kurt_Bremser explained already why INTCK is not going to work here.
data ds;
input company $ manufac_date date9. ;
format manufac_date date9.;
datalines;
Hynduai 24Oct2001
Maruthi 12Mar2008
scoda 02Aug2007
Tata 16Jun2020
;
run;
proc SQL;
select company , manufac_date,
intck('Years',manufac_date,today()) as years,
intck('Month',manufac_date,today()) as months,
intck('Day',manufac_date,today()) as days
from ds
;
quit;
@BrahmanandaRao wrote:
data ds; input company $ manufac_date date9. ; format manufac_date date9.; datalines; Hynduai 24Oct2001 Maruthi 12Mar2008 scoda 02Aug2007 Tata 16Jun2020 ; run; proc SQL; select company , manufac_date, intck('Years',manufac_date,today()) as years, intck('Month',manufac_date,today()) as months, intck('Day',manufac_date,today()) as days from ds ; quit;
Looks good to me.
@BrahmanandaRao wrote:
data ds1; set ds; days = today() - manufac_date; Years=intck('Year',manufac_date,today()); Months=intck('Month',manufac_date,today()); /* Days=intck('Day',manufac_date,today()); */ format Years Months Days manufac_date today mmddyy10.; proc print; run;I got output like this
READ.
THE.
LOG.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.
Ready to level-up your skills? Choose your own adventure.