Oracle
 sql >> Database >  >> RDS >> Oracle

NEXT_DAY() Funzione in Oracle

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: