Ваши даты в базе данных DATE
объекты или строки? Потому что если вы попытаетесь заказать их как строки, это не сработает!
Если даты DATE
с, попробуйте:
SELECT * from my_table
ORDER BY Car_Brand DESC,
Car_launch_date < NOW(),
ABS(DATEDIFF(Car_launch_date, NOW()))
Если это строки, попробуйте:
SELECT * from my_table
ORDER BY Car_Brand DESC,
DATE(Car_launch_date) < NOW(),
ABS(DATEDIFF(DATE(Car_launch_date), NOW()))
Когда вы указываете более одного столбца в порядке, он упорядочивается по первому столбцу, а затем по следующему, если значения в первом столбце совпадают.
Это заказы
- марка автомобиля, то
- Будь дата в прошлом. Ложь заказывается первой. (Так что будущее сначала), потом
- Абсолютная разница в датах (сначала наименьшее число)
Примечание: я поставил Car_Brand DESC
(обратный альфа-порядок), потому что так было у вас выше.
Спасибо ОП за то, что вы обнаружили более сложный заказ. Но я бы сказал, что так лучше :)