V databázi Oracle je NEXT_DAY()
funkce vrací datum první instance zadaného dne v týdnu, který je pozdější než zadané datum.
Syntaxe
Syntaxe vypadá takto:
NEXT_DAY(date, char)
Kde date
je datum a char
je určený den v týdnu.
char
argument musí být den v týdnu v jazyce data aktuální relace, buď celé jméno, nebo zkratka. Minimální požadovaný počet písmen je počet písmen ve zkrácené verzi. Jakékoli znaky bezprostředně následující za platnou zkratkou jsou ignorovány.
Příklad
Zde je příklad:
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Výsledek:
Příští pátek _______________ 05-10-35
Zkratky pracovních dnů
Výše uvedený příklad používá celý název dne v týdnu. V následujícím příkladu místo toho používám zkratku:
SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;
Výsledek:
Příští pátek _______________ 05-10-35
V každém případě je výsledek stejný.
Ve skutečnosti, pokud první část argumentu obsahuje platnou zkratku dne v týdnu, funkce vrátí datum následujícího dne v týdnu, které odpovídá této zkratce. Jakékoli znaky bezprostředně následující za platnou zkratkou jsou ignorovány. Takže i když celý argument ve skutečnosti není platný název dne v týdnu, pokud je první část platnou zkratkou dne v týdnu, vrátí výsledek pro tento den v týdnu.
Příklady:
SELECT
NEXT_DAY('01-OCT-2035','Monkey') AS "Next Monkey",
NEXT_DAY('01-OCT-2035','Thumbnail') AS "Next Thumbnail",
NEXT_DAY('01-OCT-2035','Friar Tuck') AS "Next Friar Tuck"
FROM DUAL;
Výsledek:
Další Monkey Další Miniatura Další Friar Tuck ______________ _________________ __________________ 08-10-35 04-OCT-35 05-OCT-35Nastavení jazyka
Jak již bylo zmíněno, den v týdnu nebo jeho zkratka musí být dnem v týdnu v jazyce data aktuální relace.
Zde je to, co se stane, když změním jazyk relace a poté se pokusím znovu spustit stejný příklad:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish'; SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday" FROM DUAL;
Výsledek:
Session alterado.Error que empieza en la linea:1 del comando :SELECT NEXT_DAY('01-OCT-2035','FRIDAY') AS "Next Friday"FROM DUALinforme de error -ORA-01846:día de la semana no válidoV tomto případě je mým jazykem španělština, a tak bychom museli uvést den v týdnu ve španělštině:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish'; SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday" FROM DUAL;
Výsledek:
Příští pátek _______________ 05-10-35Nulové argumenty
Pokud je některý z argumentů
null
, výsledkem jenull
:ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN'; SET NULL 'null'; SELECT NEXT_DAY(null, 'FRIDAY') AS "1", NEXT_DAY('01-OCT-2035', null) AS "2" FROM DUAL;
Výsledek:
1 2 _______ _______ null nullVe výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když
null
dochází v důsledku SQLSELECT
prohlášení.Můžete však použít
SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnull
by měl být vrácen.Chybí argument
Volání
NEXT_DAY()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:SELECT NEXT_DAY() FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT NEXT_DAY()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce: