BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
TurnTheBacon
Fluorite | Level 6

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?

1 ACCEPTED SOLUTION

Accepted Solutions
LinusH
Tourmaline | Level 20

If you want the same time of day, just add 2 * 24 * 60 * 60.

Data never sleeps

View solution in original post

2 REPLIES 2
LinusH
Tourmaline | Level 20

If you want the same time of day, just add 2 * 24 * 60 * 60.

Data never sleeps
Robert_Bardos
Fluorite | Level 6

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).

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to connect to databases in SAS Viya

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.

Discussion stats
  • 2 replies
  • 19015 views
  • 1 like
  • 3 in conversation