Oracle
 sql >> Base de données >  >> RDS >> Oracle

Trier par jour de la semaine du lundi au dimanche

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)