Это потому, что даты подразумевают время 00:00:00, и не указание времени исключит записи, приходящиеся на день, но технически находятся в пределах диапазона.
Укажите время:
where datefrom>=CONVERT(datetime, '4-22-2010 00:00:00',111)
AND dateto<=CONVERT(datetime, '4-22-2010 23:59:59',111)
Или еще лучше, используйте оператор МЕЖДУ:
where fDateField BETWEEN '4-22-2010' AND '4-23-2010'
Обратите внимание, что второй датой является дата + 1, т.е. следующий день, который в основном является датой 23: 59: 59