Ваша дата - "2009-12-19" (или что-то подобное, в зависимости от дня), что интерпретируется как "2009-12-19 00:00:00".
В вашей базе данных у вас, вероятно, нет ни одной даты, точно совпадающей с той, с точностью до секунды: ваши даты похожи на "2009-12-19 12:15:32".
Решение - сравнить так:
select *
from table
where date >= '2009-12-19'
and date < '2009-12-20'
Что будет интерпретироваться как:
select *
from table
where date >= '2009-12-19 00:00:00'
and date < '2009-12-20 00:00:00'
И, если вы не хотите выполнять математику, чтобы получить дату следующей даты, вы можете использовать функцию adddate
:
select *
from table
where date >= '2009-12-19'
and date < adddate('2009-12-19', interval 1 day)
Итак, в вашем случае что-то вроде этого должно сработать:
select *
from table
where date >= '$date'
and date < adddate('$date', interval 1 day)
order by score desc