sql >> Databáze >  >> RDS >> Oracle

Seřadit podle dne v týdnu od pondělí do neděle

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)


  1. Jak exportovat výsledky dotazů Oracle do souboru JSON při použití SQLcl

  2. HOUR() vs EXTRACT(HOUR …) v MariaDB:Jaký je rozdíl?

  3. Identifikace a oprava problému s výkonem předávaných záznamů

  4. SQL WHERE.. IN klauzule více sloupců