L'utilizzo di una funzione su una colonna in una clausola WHERE impedisce l'utilizzo efficiente di un indice su quella colonna. Prova invece questo:
SELECT *
FROM `datetime`
WHERE user_id = 1
AND `date` >= '2010-10-01' AND `date` < '2010-11-01'
Aggiungi un indice su (user_id, date)
.