Oplossing zonder UNION/CASE
SELECT * FROM posts
ORDER BY
DATE(published_at)=DATE(NOW()) DESC,
DATE(published_at)<DATE(NOW()) DESC,
DATE(published_at)>DATE(NOW()) ASC`
controleer of dit werkt. Het werkt prima met gestimuleerde gegevens. U kunt desc naar oplopend wijzigen volgens uw sorteervereisten voor datums in het verleden en in de toekomst