Otrzymujesz to w takiej kolejności, w jakiej jesteś, ponieważ porządkujesz według ciągu (a to nie zadziała, ponieważ nie wybierasz z niczego).
Możesz uporządkować według modelu formatu użytego do utworzenia dnia tygodnia w formie numerycznej, D
, ale ponieważ niedziela jest 1 w tym miejscu, polecam użycie mod()
aby to zadziałało.
czyli zakładając tabelę
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
To zadział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)
Oto program SQL Fiddle do zademonstrowania.
W Twoim przypadku Twoje zapytanie wyglądałoby następująco:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)