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`
जांचें कि क्या यह काम करता है। उत्तेजित डेटा के साथ यह ठीक काम कर रहा है। आप पिछली और भविष्य की तिथियों के लिए अपनी सॉर्टिंग आवश्यकता के अनुसार desc को asc में बदल सकते हैं