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.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.