Si vous voulez sélectionner toutes les lignes où la DATE partie d'une colonne DATETIME correspond à un certain littéral, vous ne pouvez pas le faire comme ceci:
WHERE startTime = '2010-04-29'
parce que MySQL ne peut pas comparer une DATE et DATETIME directement. Ce que MySQL n', elle s'étend de la DATE donnée littérale avec le temps "00:00:00'. Si votre état devient
WHERE startTime = '2010-04-29 00:00:00'
Certainement pas ce que vous voulez!
La condition est une gamme et par conséquent, il devrait être donné en gamme. Il y a plusieurs possibilités:
WHERE startTime BETWEEN '2010-04-29 00:00:00' AND '2010-04-29 23:59:59'
WHERE startTime >= '2010-04-29' AND startTime < ('2010-04-29' + INTERVAL 1 DAY)
Il y a une infime possibilité pour le premier faux - lorsque votre colonne DATETIME utilise subsecond résolution et il est un rendez-vous à 23:59:59 + epsilon. En général, je suggère l'utilisation de la deuxième variante.
Les deux variantes peuvent utiliser un index sur startTime qui va devenir important lorsque le tableau se développe.