O uso da função TO_CHAR em um ORDER BY quase sempre é um erro. O valor da coluna será ordenado alfabeticamente em vez de ser ordenado de acordo com o tipo de dados da coluna.

Código em desconformidade

Supondo que temos os dados abaixo na tabela EMP:

empno hiredate
1 2019-10-01
5 2019-10-10
15 2018-10-02
20 2018-10-20
As consultas abaixo retornam um resultado indesejado:

select empno from emp order by to_char(empno);

empno
1
15
20
5

select hiredate from emp order by to_char(hiredate, 'dd-mm-rrrr');

hiredate
01-OCT-19
02-OCT-18
10-OCT-19
20-OCT-18

Código correto

Para ordernar essa colunas corretamente precisamos remover a chamada para TO_CHAR.

select empno from emp order by empno;

empno
1
5
15
20

select hiredate from emp order by hiredate;

hiredate
02-OCT-18
20-OCT-18
01-OCT-19
10-OCT-19