Kinda late on this but you may see a performance improvement by using a parameter to store the date you are comparing.
declare @4monthsago smalldatetime
set @4monthsago = DATEADD(month, -4, GETDATE())
Then to use Eric's code from the above post:
WHERE ( r1.YYYYMM >= @4monthsago)
However, this assumes that your table doesn't have any dates in the future.
If it does you could add the following line below the where statement:
AND r1.YYYYMM < GETDATE()
If your column is actually a string of somekind (not a datetime or smalldatetime) you can either convert (see "Cast and Convert" in BOL) to get your string to a date type or you can use the parameter we created above but make it a string and convert the result of the GETDATE() function to a string.
Both have pluses (sp?) and minuses.