Solusi tanpa menggunakan 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`
periksa apakah ini berhasil. Ini bekerja dengan baik dengan data yang dirangsang. Anda dapat mengubah desc ke asc sesuai dengan persyaratan penyortiran Anda untuk tanggal yang lalu dan yang akan datang