Skip to Main Content

How can I increment dates in SAS? | SAS FAQ

The intnx function increments dates by intervals.  It computes
the date (or datetime) of the start of each interval.  For example, let’s
suppose that you had a column of days of the month, and you wanted to create a
new variable that was the first of the next month.  You could use the intnx function to help you create your new variable.

The syntax of the intnx function is:  intnx(interval, from, n <,
alignment>), where interval is a character (e.g., string) constant or
variable, from is the starting value (either a date or datetime), n
is the number of intervals to increment, and alignment is optional and
controls the alignment of the dates.

data temp2;
input id 1 @3 date mmddyy11.;
cards;
1 11/12/1980
2 10/20/1996
3 12/21/1999
;
run;

proc print data = temp2;
format date date9.;
run;
id         date

 1    12NOV1980
 2    20OCT1996
 3    21DEC1999
data temp3;
set temp2;
new_month = intnx('month',date,1);
run;
proc print data = temp3 noobs;
format date new_month date9.;
run;
id         date    new_month

 1    12NOV1980    01DEC1980
 2    20OCT1996    01NOV1996
 3    21DEC1999    01JAN2000

Now let’s try another example, this time creating a variable that is two days
later than the day given in our data set.

data temp3a;
set temp2;
two_days = intnx('day',date,2);
run;
proc print data = temp3a noobs;
format date two_days date9.;
run;
id         date     two_days

 1    12NOV1980    14NOV1980
 2    20OCT1996    22OCT1996
 3    21DEC1999    23DEC1999

 

For more information and examples showing how to increment or decrement dates by a number of business days (including weekends and/or holidays), please see https://blogs.sas.com/content/sgf/2020/01/27/shifting-a-date-by-a-given-number-of-workdays/.