BookmarkSubscribeRSS Feed
HeatherNewton
Quartz | Level 8
DATE_STATEMENT_START=INTNX("MONTH",DATE_STATEMENT,-1)+DAY(DATE_STATEMENT)-1;

how to interpret this? 

if DATE_STATEMENT is 20Nov2022

DATE_STATEMENT_START=20Oct2022+20-1

and what is the answer?

 

what if date_statement is 30Nov2022

what is intnx("MONTH",DATE_STATEMENT,-1) 30Oct2022 or 31Oct2022?

4 REPLIES 4
john_mccall
SAS Employee

Hi.

 

Trying to draft an example per your notes.  Please try the following and if this is not what you are looking for, shed more light on your goal.  Thanks.

 

Data Test;
Date='20NOV2022'd;
Day=day(date);
DateNext=intnx('month',Date,-1,'same')+ Day-1;
format date datenext date9.;
run;

proc print data=test;
title "Values for Date, Day and DateNext";
run;

john_mccall
SAS Employee

If you do not specify the fourth argument 'same' or 's' in intnx('month',Date,-1,'same'), the date will always be the first day of the month requested.  As you indicated, you can type 'e' for end, 'm' for middle, 's' for same, or 'b' for begin which is the default.

 

HeatherNewton
Quartz | Level 8

so if I dont put b or e in intnx("MONTH",DATE_STATEMENT,-1)

It will always means same date no matter what date_statement is?

what if 31oct 2022, is it going to give 30sep2022

and 31mar2022 will give 28feb2022?

 

and 11oct2022 will give 11sep2022 as same date is assumed...

Kurt_Bremser
Super User

As always, Maxim 1: Read the Documentation!

INTNX Function 

If no fourth argument is specified, the aligment defaults to "BEGINNING", so with a month interval you always get the first of the month. Adding the DAY value and subtracting 1 will result in the same day one month back, with the peculiar twist of what happens when you are at the end of a month with more days than the previous month. If you apply this on July 31, you get July 1 instead of June 30 (which would be the result of INTNX with a SAME alignment) .

SAS Innovate 2025: Call for Content

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!

Submit your idea!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 613 views
  • 3 likes
  • 3 in conversation