DATA Step, Macro, Functions and more

use of INTNX

Accepted Solution Solved
Reply
Contributor s_m
Contributor
Posts: 22
Accepted Solution

use of INTNX

data wt;
datenew=intnx('qtr','01jan94'd,1,'middle');
format datenew mmddyy10.;
run;

 

its output is coming as 05/16/1994 but qarter consists of 3 months so it should be 04/16/1994.

Please help me with this.

 


Accepted Solutions
Solution
‎04-10-2017 02:00 PM
Super User
Posts: 7,757

Re: use of INTNX


s_m wrote:

data wt;
datenew=intnx('qtr','01jan94'd,1,'middle');
format datenew mmddyy10.;
run;

 

its output is coming as 05/16/1994 but qarter consists of 3 months so it should be 04/16/1994.

Please help me with this.

 


Why? The middle of the second quarter (months 4, 5 and 6) is the middle of month 5.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers

View solution in original post


All Replies
Solution
‎04-10-2017 02:00 PM
Super User
Posts: 7,757

Re: use of INTNX


s_m wrote:

data wt;
datenew=intnx('qtr','01jan94'd,1,'middle');
format datenew mmddyy10.;
run;

 

its output is coming as 05/16/1994 but qarter consists of 3 months so it should be 04/16/1994.

Please help me with this.

 


Why? The middle of the second quarter (months 4, 5 and 6) is the middle of month 5.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Super User
Posts: 19,767

Re: use of INTNX

If you want 3 months from the date use MONTH and 3 instead of QTR. Also note that April has 30 days so it would be the 15th NOT the 16th.  See the code and output below.

 

60 data wt;
61 date1=intnx('qtr','01jan94'd,1,'m');
62 date2=intnx('MONTH','01jan94'd,3,'m');
63 format date: mmddyy10.;
64
65 put "QTR = " date1;
66 put "Month = " date2;
67 run;
 
QTR = 05/16/1994
Month = 04/15/1994
NOTE: The data set WORK.WT has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds

 

 

 

 

Super User
Super User
Posts: 7,035

Re: use of INTNX

You need to tell it that is what you want.

data test1;
  date = '01JAN1994'd ;
  next_qtr = intnx('qtr','01jan94'd,1,'middle');
  first_month_of_next_qtr = intnx('month',intnx('qtr','01jan94'd,1,'s'),0,'middle');
  format _all_ yymmdd10.;
  put (_all_) (=/);
run;

date=1994-01-01
next_qtr=1994-05-16
first_month_of_next_qtr=1994-04-15

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 154 views
  • 5 likes
  • 4 in conversation