Je krijgt het in de volgorde waarin je bent, omdat je per string bestelt (en dit zou niet werken omdat je nergens uit selecteert).
U kunt bestellen volgens het formaatmodel dat wordt gebruikt om de dag van de week in numerieke vorm te creëren, D
, maar aangezien zondag hierin 1 is, raad ik aan om mod()
. te gebruiken om dit te laten werken.
d.w.z. uitgaande van de tabel
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
Dit zou werken:
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)
Hier is een SQL Fiddle om te demonstreren.
In uw geval zou uw vraag worden:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)