of the Month
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=; cards; 14APR2012 13MAY2012 14APR2012 14MAY2012 14APR2012 15MAY2012 ; run; 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