BookmarkSubscribeRSS Feed
dht115
Calcite | Level 5

Hello, 

 

I need date format to YYYY_DD.

So far I was able to get the date format in YYYY-DD by using following code: 

/*yymmd7. format - YYYY-DD*/
%let today2 = %sysfunc(today(),yymmd7.);
%put &today2.;

Result: 2022-01

 

Need: 

Result: 2022_01

3 REPLIES 3
PaigeMiller
Diamond | Level 26

You would have to create a custom format using the PICTURE command in PROC FORMAT.

 

Example: https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.4/proc/p1717ykol58oijn13lw9rs30lhn0.htm

--
Paige Miller
PeterClemmensen
Tourmaline | Level 20

See if you can use this as a template

 

proc format; 
  picture dtfmt (default = 30)
    other = '%Y_%0m' (datatype=date)
  ;
run;

%let dt = %sysfunc(today(), dtfmt.);
%put &dt.;
BrunoMueller
SAS Super FREQ

I assume by YYYY_DD you mean year_month

 

The code below uses the NLDATE function to build the string your are after. When you have nested DATA Step functions, each function needs its own %SYSFUNC. The %NRSTR macro function avoids warning messages.

/*yymmd7. format - YYYY-DD*/
%let today2 = %sysfunc(nldate(%sysfunc(today()),%nrstr(%Y_%m)));
%put &today2.;

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 3 replies
  • 510 views
  • 3 likes
  • 4 in conversation