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.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.