Nie otrzymujesz wyników, które prawdopodobnie $date
ma pewne przesunięcie czasowe i nie jest równe 00:00:00
w Twojej strefie czasowej.
WHERE timestamp_column BETWEEN '" . strtotime($date) . "' AND '" . strtotime($date, '+1 day') . "'
a dokładniej:
WHERE timestamp_column >= '" . strtotime($date) . "'
AND timestamp_column < '" . strtotime($date, '+1 day') . "'