Hi Team,
I have dates stored in character format. They look like - "15Jul2014". I need to convert it into 2014-Jul-15 i.e. YYYY-MMM-DD . Is there any easy way to convert it?
Thanks in anticipation!
What software are you using? Base SAS, Enterprise Guide, SAS Data Management, SAS Data Integration, etc.?
-shawn
I am using Base SAS. Does your answer vary in Base SAS and SAS Enterprise Guide? Thanks!
You need to define a format for yourself .
proc format;
picture fmt
low-high='%Y-%b-%0d'(datatype=date);
run;
data x;
a='15Jul2014'd;
format a fmt12.
run;
Xia Keshan
Hi,
Alternatively just create a text field:
data want;
set have;
length new_date $10;
new_date=catx('-',substr(old_date,6,4),substr(old_date,3,3),substr(old_date,1,2));
run;
Ujjawal,
Is your date really a character variable? If so, I would urge you to convert it into a SAS date value first.
If your date is stored as a SAS date value, RW9's solution won't work without additional coding. If it is a character value, then you won't be able to do any calulations with it without code to do that transformation to a SAS date value. Xia's solution is the easiest way of dealing with the fact that SAS does not have every possible date format available. Only change I would make is I would use a more descriptive format name than "fmt".
IMHO, there is no reason to represent a date as a character variable in a SAS table or view, UNLESS you are dealing with complex ISO8601 dates and need to calculate ISO durations and intervals using CALL IS8601_CONVERT.
Derek
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.
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.