Index for date part of field?
The problem isn't the index.  The problem is that your query as written does not allow an index to be used.

Modify your query so that the date range is resolved to a pair of constants and the problem is solved:

WHERE datetime_field &gt;= CURDATE()
  AND datetime_field &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)


This will use the index on the column.

As a rule, never use a column as an argument to a function in WHERE because this forces a table scan.