I'm not sure, to be honest, why that code works for other months. It's looking for dates where the difference in years is equal to the difference in months?
In any case, the following should be better..
SQL = "SELECT * FROM tbl_cm_schedule WHERE cid=" & Session.Contents("UserID")
& " AND (MONTH(#" & ddate & "#) = MONTH(cdate) AND YEAR(#" & ddate & "#) = YEAR(cdate)) ORDER BY cdate"