Hi all,
%Let mon - Dec2011 ;
I want to use the above macro variable in a data step and create a month end date variable in date9. format (like 31DEC2011) . Is there a easy way to do it?
Data a;
date9 = 31dec2011(this is what i want to see in column date9.)
Run;
Thanks in advance for your help.
First learn about date literals to make it easier to use the macro variable. You could write "01&mon"d to represent the first of the month.
Then learn about the INTNX function for how to convert a date. You want to use MONTH interval and find the END of the interval.
%let mon=Dec2011;
data a;
date9 = intnx('month',"01&mon"d,0,'end');
format date9 date9.;
put "mon=&mon " date9= ;
run;
mon=Dec2011 date9=31DEC2011
You can also do this in macro logic if you need it.
%let d=dec2011;
%let e=%sysfunc(intnx(month,"01&d"d,0,e),date9.);
%put e=&e;
e=31DEC2011
%let d=feb2012;
%let e=%sysfunc(intnx(month,"01&d"d,0,e),date9.);
%put e=&e;
e=29FEB2012
First learn about date literals to make it easier to use the macro variable. You could write "01&mon"d to represent the first of the month.
Then learn about the INTNX function for how to convert a date. You want to use MONTH interval and find the END of the interval.
%let mon=Dec2011;
data a;
date9 = intnx('month',"01&mon"d,0,'end');
format date9 date9.;
put "mon=&mon " date9= ;
run;
mon=Dec2011 date9=31DEC2011
You can also do this in macro logic if you need it.
%let d=dec2011;
%let e=%sysfunc(intnx(month,"01&d"d,0,e),date9.);
%put e=&e;
e=31DEC2011
%let d=feb2012;
%let e=%sysfunc(intnx(month,"01&d"d,0,e),date9.);
%put e=&e;
e=29FEB2012
Thanks!!
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!
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.