Anda mendapatkannya sesuai urutan karena Anda memesan dengan string (dan ini tidak akan berfungsi karena Anda tidak memilih dari apa pun).
Anda dapat memesan dengan model format yang digunakan untuk membuat hari dalam seminggu dalam bentuk numerik, D
, tetapi karena hari Minggu adalah 1 dalam hal ini, saya akan merekomendasikan menggunakan mod()
untuk membuat ini berhasil.
yaitu dengan asumsi tabel
create table a ( b date );
insert into a
select sysdate - level
from dual
connect by level <= 7;
Ini akan berhasil:
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)
Berikut adalah SQL Fiddle untuk didemonstrasikan.
Dalam kasus Anda, kueri Anda akan menjadi:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)