Dostáváte to v pořadí, ve kterém jste, protože objednáváte podle řetězce (a to by nefungovalo, protože si z ničeho nevybíráte).
Můžete objednávat podle modelu formátu použitého k vytvoření dne v týdnu v číselné formě D
, ale protože neděle je v tomto 1, doporučil bych použít mod()
aby to fungovalo.
tj. za předpokladu tabulky
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
Toto by fungovalo:
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)
Zde je ukázka SQL Fiddle.
Ve vašem případě by váš dotaz byl:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)