Hi to everybody!
I'm working with date formats. I've got a nice data set with this but the forma of my dates are for example: 02/11/2016. I need to put first the day, then month and then year. Untill here everything is ok but I would like to put them in this format: 02/NOV/2016 and I can't!
I wrote "Month = put(date,monname3.);" and now I've converted my variable month from number to Words but I am not able to put that in the way I want "02/NOV/2016" "24/FEB/2013", etc.
DatePA= left(fecha);
Day = SUBSTR(fechapa,7,2);
Month = SUBSTR(fechapa,5,2);
Year = SUBSTR(fechapa,1,4);
Date = MDY (Month,Day,Year);
Month = put(date,monname3.);
format Date ddmmyy10.;
Thank you!
Investigate whether the requirements can be a little bit flexible. It's very easy to come close to what you are asking for:
m1 = put(date, date11.);
or
m2 = put(date, date9.);
Investigate whether the requirements can be a little bit flexible. It's very easy to come close to what you are asking for:
m1 = put(date, date11.);
or
m2 = put(date, date9.);
Look at building a custom format, with PROC format.
Its easier than you think 🙂
Proc format;
picture ddmonyy other= "%0d/%b/%Y" (datatype=date);
run;
When dealing with dates it is often easier to actually use a SAS date valued variable an a format. Your request for / in the middle of the date with the month name is uncommon but doable with a custom format.
The following code creates a SAS date valued variable from a character variable that I think mimics your fechapa variable.
Then uses the custom format created with proc format to display the date as desired.
NOTE: the case of the letters in the string '%d/%b/%Y' is critical as changing the Y to y will result in a 2 digit year and a %B instead of %b is the full name not the 3-letter abbreviation. The % tells proc format the values are directives and the datatype tells SAS what ranges of values to expect.
data example;
x='20160425';
y=input(x,yymmdd8.);
format y date9.;
run;
proc format library=work;
picture DateSlash (default=12)
low-high= '%d/%b/%Y' ( datatype=date)
;
run;
proc print data=example;
var y;
format y dateslash.;
run;
So once you have your Date variable you use the format dateslash as needed. Note, since this is a custom format permanent association of the format means that you should place the format in a location that is always in the FMTSEARCH path OR rerun the proc format as needed.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.