Du får den i den ordning du får eftersom du beställer efter en sträng (och det här skulle inte fungera eftersom du inte väljer från någonting).
Du kan beställa efter formatmodellen som används för att skapa veckodagen i numerisk form, D
, men eftersom söndag är 1 i detta skulle jag rekommendera att använda mod()
för att få det här att fungera.
d.v.s. antar tabellen
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
Detta skulle fungera:
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)
Här är en SQL-fiol att demonstrera.
I ditt fall skulle din fråga bli:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)