sql >> Database teknologi >  >> RDS >> Oracle

Sorter efter ugedag fra mandag til søndag

Du får det i den rækkefølge, du har, fordi du bestiller efter en streng (og dette ville ikke fungere, fordi du ikke vælger fra noget).

Du kan bestille efter formatmodellen, der bruges til at oprette ugedagen i numerisk form, D , men da søndag er 1 i dette, vil jeg anbefale at bruge mod() for at få dette til at fungere.

dvs. antager bordet

create table a ( b date );

insert into a
 select sysdate - level
  from dual
connect by level <= 7;

Dette ville virke:

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)

Her er en SQL Fiddle at demonstrere.

I dit tilfælde vil din forespørgsel blive:

select ename, to_char(hiredate,'fmDay') as "Day" 
  from my_table
 order by mod(to_char(hiredate, 'D') + 5, 7)


  1. RADIANS() Eksempler i SQL Server

  2. Hvordan skriver man ved hjælp af BCP til en ekstern SQL-server?

  3. Migrering af MySQL til PostgreSQL på AWS RDS, del 2

  4. Vedhæftning af et ContentDocument til et Salesforce Custom Object