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

Funkce NEXT_DAY() v Oracle

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-35 

Nastavení 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álido

V 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-35 

Nulové argumenty

Pokud je některý z argumentů null , výsledkem je null :

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 null 

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT 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ězec null 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:

  1. Použijte NEWID() k vytvoření jedinečné hodnoty na serveru SQL Server

  2. Použití Salesforce SOQL z Linuxu

  3. Jak najít minimální hodnoty ve sloupcích

  4. Jak funguje Tan() v PostgreSQL