Return to Homepage

Goto the Tip of the Month Archive

Other interesting pages ...
LinkedIn Profile
SAS Cheat Sheet
Useful SAS Code
Full SAS Example
Basic Statistics
Contact Information

SAS Tip of the Month
July 2012
(for SAS and WPS)

Counting the number of COMPLETE months between two dates can be easily calculated using the following code:

   months = intck('month',date1,date2) - (day(date2) < day(date1))

The INTCK function counts the number of months between DATE1 and DATE2 using the MONTH value in the first parameter of the INTCK call. However, this can still cause a problem if the day number of the first date is after the day number of the second date which means a complete calendar month has not happened -- in order for this situation to resolve correctly, a check of this is made in the second part of the equation resulting in a '1' for TRUE and '0' for FALSE. See below for and example that shows this code in use:

   data _null_;
      infile cards;
      input @1 date1 date9. @11 date2 date9.;
      months = intck('month',date1,date2) - (day(date2) < day(date1));
      put date1= date9. date2= date9. months=;
   14APR2012 13MAY2012
   14APR2012 14MAY2012
   14APR2012 15MAY2012

   date1=14APR2012 date2=13MAY2012 months=0
   date1=14APR2012 date2=14MAY2012 months=1
   date1=14APR2012 date2=15MAY2012 months=1

Try the code yourself and see how it works, and also see what happens if you take out the "(day(date2) < day(date1))", or swap the two dates.

See you next month.

Updated July 7, 2012