Votre date est "2009-12-19" (ou quelque chose comme ça, selon le jour), qui est interprété comme "2009-12-19 00:00:00".
Dans votre base de données, vous n'avez probablement aucune date qui est exactement égale à celle-ci, à la seconde: vos dates sont comme "2009-12-19 12:15:32".
Une solution est de comparer comme ceci:
select *
from table
where date >= '2009-12-19'
and date < '2009-12-20'
qui sera interprété comme:
select *
from table
where date >= '2009-12-19 00:00:00'
and date < '2009-12-20 00:00:00'
Et, si vous ne voulez pas faire le calcul pour obtenir la date de la après la date, vous pouvez utiliser la fonction adddate
:
select *
from table
where date >= '2009-12-19'
and date < adddate('2009-12-19', interval 1 day)
Ainsi, dans votre cas, quelque chose comme cela devrait faire l'affaire:
select *
from table
where date >= '$date'
and date < adddate('$date', interval 1 day)
order by score desc
c'est la meilleure façon de le faire =) THX beaucoup –
Si je ne me trompe pas, avec une solution comme celle-ci, dans laquelle il y a un calcul sur la colonne "date", que le calcul/la conversion devra être effectué sur chaque ligne de la table, ce qui gâchera la possibilité d'utiliser l'index qui aurait pu être défini dans la colonne "date". –
@Pascal: Oui, je le pense. J'ai ajouté la clarification dans ma réponse ... En attendant, je vérifie comment MySQL gère cela, par curiosité. –