Puede usar una de dos niveles ORDER BY
cláusula, por ejemplo:
SELECT *
FROM yourTable
ORDER BY
date_col < CURDATE(),
date_col;
la primera expresión date_col < CURDATE()
es una expresión booleana, que sería verdadera (1) para fechas anteriores a la medianoche de hoy y falsa (0) en caso contrario. Esto coloca todas las fechas en el futuro antes de todas las fechas en el pasado. Luego, usamos una ordenación de segundo nivel para ordenar todas las fechas de forma ascendente.
Manifestación
.