попробуйте использовать
ORDER BY appointment.appointment_date ASC";
или
ORDER BY appointment.appointment_date DESC";
в вашем запросе ...
Если вы не укажете ключевое слово ASC или DESC, по умолчанию используется ASC или возрастающий порядок.
поэтому, когда вы используете yyyy-mm-dd, он возрастает по yyyy, а когда вы используете dd-mm-yyyy, он поднимается по dd. поэтому укажите asc или desc в запросе ...
поэтому ваш запрос должен быть
$query = "SELECT * FROM appointment,users WHERE appointment.user_id=users.user_id AND users.role_id=2 ORDER BY appointment.appointment_date DESC";
Обновлено:
$query = "SELECT * FROM appointment,users WHERE appointment.user_id=users.user_id AND users.role_id=2 ORDER BY STR_TO_DATE(appointment.appointment_date , '%Y-%m-%d') ASC";