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.
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 |
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 |
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 |