DATA Step, Macro, Functions and more

Converting a SAS date to a formatted Date

Occasional Contributor
Posts: 8

Converting a SAS date to a formatted Date

For some reason I can not figure this out. I have a variable, 'date' that is a numeric variable and has SAS value dates. For example: 




Which refers to the date of 10/1/2013.  I want create a new variable 'newdate' that has the mmddyy10. format. 


How do I convert date to newdate?






Super User
Posts: 6,971

Re: Converting a SAS date to a formatted Date

Do you want it to be a SAS date variable with the proper format? Then do:

newdate = date;
format newdate mmddyy10.;

Or do you want it to be the string representation? Then do:

newdate = put(date,yymmdd10.);

which creates a character variable.

Maxims of Maximally Efficient SAS Programmers
Super User
Posts: 10,548

Re: Converting a SAS date to a formatted Date

The flexibility of SAS date formats is one of the, IMHO, great features. Plus you have the ability to create custom ones as well.

The format controls the appearance for display and in analysis procedures can also be used to assign bins for grouping.

Except for some odd uses I recommend leaving date values as numeric as long as possible and just assign the format as desired for any specific use. Formats may be permanently assigned to the variable at creation but overridden with a format statement in any procedure.


data _null_;
   put 'Date in date9. format=' date date9.;
   put 'Date in mmddyy10. format=' date mmddyy10.;
   put 'Date in worddate. format=' date worddate.;
   put 'Date in Julian  format=' date Julian.;
   put 'Date in year quarter format=' date YYQs.;
Ask a Question
Discussion stats
  • 2 replies
  • 3 in conversation