In Oracle Database, il NEXT_DAY()
La funzione restituisce la data della prima istanza del giorno della settimana specificato successiva alla data specificata.
Sintassi
La sintassi è questa:
NEXT_DAY(date, char)
Dove date
è la data e char
è il giorno della settimana specificato.
Il char
l'argomento deve essere un giorno della settimana nella lingua della data della sessione corrente, il nome completo o l'abbreviazione. Il numero minimo di lettere richiesto è il numero di lettere nella versione abbreviata. Tutti i caratteri immediatamente successivi all'abbreviazione valida vengono ignorati.
Esempio
Ecco un esempio:
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Risultato:
Next Friday ______________ 05-OCT-35
Abbreviazioni dei giorni feriali
L'esempio precedente utilizza il nome completo del giorno della settimana. Nell'esempio seguente, utilizzo invece l'abbreviazione:
SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;
Risultato:
Next Friday ______________ 05-OCT-35
In ogni caso, il risultato è lo stesso.
Infatti, fintanto che la prima parte dell'argomento contiene un'abbreviazione valida per il giorno della settimana, la funzione restituirà la data del giorno della settimana successivo che corrisponde a tale abbreviazione. Tutti i caratteri immediatamente successivi all'abbreviazione valida vengono ignorati. Quindi, anche se l'intero argomento non è in realtà un nome di giorno della settimana valido, purché la prima parte sia un'abbreviazione di giorno della settimana valida, restituirà un risultato per quel giorno della settimana.
Esempi:
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;
Risultato:
Next Monkey Next Thumbnail Next Friar Tuck ______________ _________________ __________________ 08-OCT-35 04-OCT-35 05-OCT-35
Impostazioni lingua
Come accennato, il giorno della settimana o la sua abbreviazione deve essere un giorno della settimana nella lingua della data della sessione corrente.
Ecco cosa succede quando cambio la lingua della mia sessione, quindi provo a eseguire di nuovo lo stesso esempio:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Risultato:
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 questo caso, la mia lingua è lo spagnolo, quindi dovremmo fornire il giorno della settimana in spagnolo:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;
Risultato:
Next Friday ______________ 05-OCT-35
Argomenti nulli
Se uno dei due argomenti è null
, il risultato è 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;
Risultato:
1 2 _______ _______ null null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null
si verifica come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Argomento mancante
Chiamando NEXT_DAY()
con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT NEXT_DAY()
FROM DUAL;
Risultato:
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: