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: