BookmarkSubscribeRSS Feed
SASPhile
Quartz | Level 8
how to convert JAN2010 format to 01-2010?
4 REPLIES 4
Cynthia_sas
Diamond | Level 26
Hi:
Check out the MMYYx format...for example, if you have a SAS date value for today, then the MMYYd7. format would display 02-2010 for today's date. (the 'd' in the format name says to put a dash or hyphen between the month and the year.

It's not entirely clear what your question means -- the reference to MONyyw. in the subject implies that you have a SAS date variable and are already using the MONYYw. format -- in which case, switching to a different format should be easy and require nothing more than a FORMAT statement with a different format for your numeric date variable.

However, if you have a CHARACTER variable or string with the value 'JAN2010' and you need to turn that CHARACTER variable into a SAS date value, so you can use a format -- that is a different question and not so easily solved with a FORMAT statement.

cynthia

Also, it's not clear whether this question is related to this previous post:
http://support.sas.com/forums/message.jspa?messageID=50092#50092
Hima
Obsidian | Level 7

PROC SQL;

SELECT DATE FORMAT MMYYS. FROM TABLE NAME;

QUIT;

JohnT
Quartz | Level 8

This is pretty old, so I dare say not relevant anymore, but this is how I might have done it:

data _null_;
   date = 'JAN2010';
   format date2 mmyyd7.;
   date2 = input(date, monyy7.);

   call symput('date',  date);
   call symput('date2', date2);
run;
%put date=&date. date2=%sysfunc(putn(&date2., mmyyd7.) );

Which outputs:

20 data _null_;

21 date = 'JAN2010';

22 format date2 mmyyd7.;

23 date2 = input(date, monyy7.);

24

25 call symput('date', date);

26 call symput('date2', date2);

27 run;

NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).

26:25

NOTE: DATA statement used (Total process time):

real time 0.00 seconds

cpu time 0.00 seconds

28 %put date=&date. date2=%sysfunc(putn(&date2., mmyyd7.) );

date=JAN2010 date2=01-2010

Linlin
Lapis Lazuli | Level 10

if you have a CHARACTER variable:

data have;

input date $;

cards;

jan2012

feb2012

;

proc sql;

  create table want as select input(date,MonYY7.)

     as date format mmyyd7.

       from have;

quit;

proc print;run;

                                         Obs       date

                                           1     01-2012

                                           2     02-2012

Linlin

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
  • 4 replies
  • 2196 views
  • 0 likes
  • 5 in conversation