sql >> Databasteknik >  >> RDS >> Oracle

Sortera efter veckodag från måndag till söndag

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)


  1. Dataingenjörsintervjufrågor med Python

  2. Entity Framework Code Först med SQL Server-synonymer

  3. org.postgresql.util.PSQLEUndantag:FATAL:ledsen, för många klienter redan

  4. Skicka en lista med heltal från C# till Oracles lagrade procedur