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).
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.