Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NEXT_DAY()-Funktion in Oracle

In der Oracle-Datenbank der NEXT_DAY() Die Funktion gibt das Datum der ersten Instanz des angegebenen Wochentags zurück, das nach dem angegebenen Datum liegt.

Syntax

Die Syntax lautet wie folgt:

NEXT_DAY(date, char)

Wobei date ist das Datum und char ist der angegebene Wochentag.

Das char Das Argument muss ein Wochentag in der Datumssprache der aktuellen Sitzung sein, entweder der vollständige Name oder die Abkürzung. Die erforderliche Mindestanzahl von Buchstaben ist die Anzahl von Buchstaben in der abgekürzten Version. Alle Zeichen unmittelbar nach der gültigen Abkürzung werden ignoriert.

Beispiel

Hier ist ein Beispiel:

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

Ergebnis:

   Next Friday 
______________ 
05-OCT-35     

Abkürzungen für Wochentage

Das obige Beispiel verwendet den vollständigen Namen des Wochentags. Im folgenden Beispiel verwende ich stattdessen die Abkürzung:

SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;

Ergebnis:

   Next Friday 
______________ 
05-OCT-35     

In beiden Fällen ist das Ergebnis dasselbe.

Solange der erste Teil des Arguments eine gültige Abkürzung für einen Wochentag enthält, gibt die Funktion das Datum des folgenden Wochentags zurück, der dieser Abkürzung entspricht. Alle Zeichen unmittelbar nach der gültigen Abkürzung werden ignoriert. Selbst wenn also das gesamte Argument kein gültiger Wochentagsname ist, wird ein Ergebnis für diesen Wochentag zurückgegeben, solange der erste Teil eine gültige Wochentagsabkürzung ist.

Beispiele:

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;

Ergebnis:

   Next Monkey    Next Thumbnail    Next Friar Tuck 
______________ _________________ __________________ 
08-OCT-35      04-OCT-35         05-OCT-35         

Spracheinstellungen

Wie bereits erwähnt, muss der Wochentag oder seine Abkürzung ein Wochentag in der Datumssprache der aktuellen Sitzung sein.

Folgendes passiert, wenn ich die Sprache meiner Sitzung ändere und dann versuche, dasselbe Beispiel erneut auszuführen:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

Ergebnis:

Session alterado.


Error que empieza en la línea: 1 del comando :
SELECT NEXT_DAY('01-OCT-2035','FRIDAY') AS "Next Friday"
FROM DUAL
Informe de error -
ORA-01846: día de la semana no válido

In diesem Fall ist meine Sprache Spanisch, daher müssen wir den Wochentag auf Spanisch angeben:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;

Ergebnis:

   Next Friday 
______________ 
05-OCT-35     

Null-Argumente

Wenn eines der Argumente null ist , ist das Ergebnis 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;

Ergebnis:

      1       2 
_______ _______ 
null    null   

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Fehlendes Argument

Aufruf von NEXT_DAY() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT NEXT_DAY()
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT NEXT_DAY()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action: