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

Jak vyloučím víkendy v SQL?

Stačí přidat následující filtr :

WHERE TO_CHAR(date_column, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN')

Váš dotaz bude vypadat takto:

SELECT SLA_Date
   FROM orders
 WHERE TO_CHAR(SLA_Date, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN')

Například (klauzule WITH slouží pouze k vytvoření testovacího případu) má níže uvedený dotaz zobrazit pouze dny v týdnu (tj. kromě So a Ne) od 1st May 2015 do 31st May 2015 :

SQL> WITH DATA AS
  2    (SELECT to_date('05/01/2015', 'MM/DD/YYYY') date1,
  3      to_date('05/31/2015', 'MM/DD/YYYY') date2
  4    FROM dual
  5    )
  6  SELECT date1+LEVEL-1 the_date,
  7        TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN') day
  8  FROM DATA
  9  WHERE TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN')
 10        NOT IN ('SAT', 'SUN')
 11  CONNECT BY LEVEL <= date2-date1+1;

THE_DATE  DAY
--------- ---
01-MAY-15 FRI
04-MAY-15 MON
05-MAY-15 TUE
06-MAY-15 WED
07-MAY-15 THU
08-MAY-15 FRI
11-MAY-15 MON
12-MAY-15 TUE
13-MAY-15 WED
14-MAY-15 THU
15-MAY-15 FRI
18-MAY-15 MON
19-MAY-15 TUE
20-MAY-15 WED
21-MAY-15 THU
22-MAY-15 FRI
25-MAY-15 MON
26-MAY-15 TUE
27-MAY-15 WED
28-MAY-15 THU
29-MAY-15 FRI

21 rows selected.

SQL>

Podrobný příklad viz Vygenerovat datum, název měsíce, číslo týdne, číslo dne mezi dvěma daty



  1. Připravené příkazy PHP... Svázat proměnnou jako číselný rozsah v REGEXP?

  2. Je možné skrýt heslo v MySQL General/Slow Query Logs?

  3. Regex - vyhledá konkrétní číslo v řetězci

  4. jak volat funkci v oracle