I have a macrovariable called &filterdate_start. It's DATETIME20 and has the value 26NOV2012:00:00:00.
I need a new macrovariable called &filterdate_end to equal &filterdate_start + 2 days, with the value 28NOV2012:00:00:00.
What's the most practical way to add 2 days to a DATETIME20 value?
If you want the same time of day, just add 2 * 24 * 60 * 60.
If you want the same time of day, just add 2 * 24 * 60 * 60.
I'd use one of SAS's most powerful date/datetime functions: INTNX
Somewhat like
%let filterdate_end = %sysfunc( intnx( dtday, "&filterdate_start"dt, 2 ) , datetime20. ) ;
Two assumptions here: &filterdate_start is the formatted datetime value, &filterdate_end is expected to be in datetime20. format.
If not then
%let filterdate_end = %sysfunc( intnx( dtday, &filterdate_start, 2 ) ) ;
will do and return the result as the number of seconds since SAS epoch (formatting then left to you).
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.