data have;
input date $15.;
cards;
UN-UNK-2019
UN-NOV-2010
UN-JAN-2019
10-JAN-2018
;
run;
Want:
2019-UNK-UN
2010-11-UN
2019-01-UN
2018-01-10
please try
data have;
input date $15.;
if scan(date,2,'-') ne 'UNK' then do;
month=month(input(cats('01',scan(date,2,'-'),'2019'),date9.));
date2=tranwrd(date,scan(date,2,'-'),put(month,z2.));
end;
else date2=date;
newdate=prxchange('s/(.*)\-(.*)\-(.*)/$3-$2-$1/',-1,strip(date2));
cards;
UN-UNK-2019
UN-NOV-2010
UN-JAN-2019
10-JAN-2018
;
run;
You really do not "convert" here, you just reshuffle and reformat the values. Your output does not constitute dates, as dates always refer to a specific day within a specific month within a specific year. Basically, you don't change anything to the better.
Since you have incomplete values in your input, I suggest two possible approaches:
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.