Hi, i tried the above with some sample data and with the format with which you are working and i have got the outputs with the same code as you are using. i tired with the below mentioned codes: PROC SQL; CREATE TABLE WANT AS SELECT * FROM SAMPLE_DATA where ORDERDATE between '01Jun15'd and '01Jul15'd; quit; PROC SQL; CREATE TABLE WANT_DATA AS SELECT * FROM SAMPLE_DATA where ORDERDATE between INTNX('MONTH',TODAY(),-1,'B')AND INTNX('MONTH',TODAY(),0,'B'); quit; DATA DATA_WANT; SET SAMPLE_DATA; WHERE ORDERDATE BETWEEN INTNX('MONTH',TODAY(),-1,'b') AND INTNX('MONTH',TODAY(),0,'b'); RUN; the below mentioned can be useful: (just for reference) data _null_; today= today(); nextweek =intnx('week',today(),1); lastweek =intnx('week',today(),-1); firstdaynextmonth =intnx('month',today(),1,'b'); lastdaylastmonth =intnx('month',today(),-1,'e'); samedaylastmonth =intnx('month',today(),-1,'s'); middlelastmonth =intnx('month',today(),-1,'m'); lastdaynextquater =intnx('qtr',today(),1,'e'); put 'Today is ' today :date9.; put 'Next week ' nextweek :date9.; put 'LastWeek is ' lastweek :date9.; put 'The First Day of Next Month is ' firstdaynextmonth :date9.; put 'The Last Day of Last Month is ' lastdaylastmonth :date9.; put 'The Same Day of Last Month is ' samedaylastmonth :date9.; put 'The Middle of Last Month is ' middlelastmonth :date9.; put 'The Last Day of Next Quater is ' lastdaynextquater :date9.; run; hope it helps... regards, K
... View more