The usage of TO_CHAR function in a ORDER BY is almost always a mistake.
The column value will be ordered alphabetically instead of being ordered according its datatype.
Suppose we have the data below in the EMP table:
| 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 call.
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 |