Si vous souhaitez sélectionner toutes les lignes où la partie DATE d'une colonne DATETIME correspond à un certain littéral, vous ne pouvez pas le faire comme ceci:
WHERE startTime = '2010-04-29'
car MySQL ne peut pas comparer directement une DATE et une DATETIME. Ce que fait MySQL, il étend le littéral DATE donné avec l'heure «00: 00: 00». Alors ta condition devient
WHERE startTime = '2010-04-29 00:00:00'
Certainement pas ce que vous voulez!
La condition est une plage et doit donc être donnée comme plage. Il existe 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 petite possibilité pour le premier de se tromper - lorsque votre colonne DATETIME utilise une résolution inférieure à la seconde et qu'il y a un rendez-vous à 23:59:59 + epsilon. En général, je suggère d'utiliser la deuxième variante.
Les deux variantes peuvent utiliser un index sur startTime qui deviendra important lorsque la table grandira.