sql >> Base de Datos >  >> RDS >> Oracle

Ordenar por día de la semana de lunes a domingo

Lo está obteniendo en el orden en que está porque está ordenando por una cadena (y esto no funcionaría porque no está seleccionando nada).

Puede ordenar por el modelo de formato utilizado para crear el día de la semana en forma numérica, D , pero como el domingo es 1 en esto, recomendaría usar mod() para que esto funcione.

es decir, asumiendo la mesa

create table a ( b date );

insert into a
 select sysdate - level
  from dual
connect by level <= 7;

Esto funcionaría:

select mod(to_char(b, 'D') + 5, 7) as dd, to_char(b, 'DAY')
  from a
 order by mod(to_char(b, 'D') + 5, 7)

Aquí hay un SQL Fiddle para demostrarlo.

En su caso, su consulta se convertiría en:

select ename, to_char(hiredate,'fmDay') as "Day" 
  from my_table
 order by mod(to_char(hiredate, 'D') + 5, 7)