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
Anandkvn_0-1625908895802.png
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.
Anandkvn_0-1625920781702.png
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:
Anandkvn_0-1625920781702.png
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
Anandkvn_0-1625908895802.png
READ.
THE.
LOG.
CFC_SAS_Communities_400x225.jpg
It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.
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.