BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
vicky07
Quartz | Level 8

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.

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

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

View solution in original post

2 REPLIES 2
Tom
Super User Tom
Super User

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

vicky07
Quartz | Level 8

Thanks!!

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

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!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1095 views
  • 0 likes
  • 2 in conversation