SELECT `date`
FROM `foo`
WHERE `id` >= (
SELECT `id`
FROM `foo`
WHERE `date` < now()
ORDER BY `id` DESC
LIMIT 1
)
Это конечно в предположении, что даты расположены последовательно. Если нет - то можно, например, отдельно выбрать последнюю прошедшую и отдельно все будущие и объединить их union'ом.