Hi,
SELECT * FROM
calendarWHERE DATE_FORMAT(
date,'%Y-%m') = '2012-01'
hier kann MySQL i.d.R. keinen Index nutzen, weil MySQL berechnete Indize nicht kennt. Die Abfrage wird dann u.U. langsam. Wenn du ein Datum abfragen willst, dann frage einfach mit "BETWEEN ... AND" ab (so wie du es in deinem zweiten Beispiel machst), als Begrenzer kannst du den ersten des gesuchten Monats und den ersten des folgenden Monats nehmen.
Bis die Tage,
Matti