Vous l'obtenez dans l'ordre dans lequel vous êtes parce que vous commandez par une chaîne (et cela ne fonctionnerait pas parce que vous ne sélectionnez rien).
Vous pouvez trier par le modèle de format utilisé pour créer le jour de la semaine sous forme numérique, D
, mais comme dimanche est 1, je recommanderais d'utiliser mod()
pour que cela fonctionne.
c'est-à-dire en supposant que le tableau
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
Cela fonctionnerait :
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)
Voici un SQL Fiddle à démontrer.
Dans votre cas, votre requête deviendrait :
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)