Hello,
I want to build a macro which shows me current date in datetime format and a date -1 month.
%let date1 = %sysfunc(datetime(),DATETIME16.);
%let date_prev=%sysfunc(intnx(month,"%sysfunc(putn("&date1"d,DATETIME16.))"d,-1,s),DATETIME16.);
%put &date_prev.;
Date1 gives me good results but in date_prev i have 31DEC59:23:53:55.
How I should change this macro to have date_prev = 07AUG2017time ?
Why not do it in a data step like this?
data _null_;
date1 = datetime();
date_prev = intnx('dtmonth', date1, -1, 's');
format date1 date_prev datetime16.;
put date1= date_prev=;
run;
Why not do it in a data step like this?
data _null_;
date1 = datetime();
date_prev = intnx('dtmonth', date1, -1, 's');
format date1 date_prev datetime16.;
put date1= date_prev=;
run;
Its been asked many times here. The question is why would you need to? You can always get yesterdays date by doing intnx('year',today,-1); so why bother going through all the effort of calculating it, then storing it as text - macro is always text - then trying to use that text in your code. Its madness.
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!
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.