Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NEXT_DAY() dans Oracle

Dans Oracle Database, le NEXT_DAY() renvoie la date de la première instance du jour de semaine spécifié qui est postérieure à la date spécifiée.

Syntaxe

La syntaxe ressemble à ceci :

NEXT_DAY(date, char)

date est la date et char est le jour de semaine spécifié.

Le char l'argument doit être un jour de la semaine dans la langue de date de la session en cours, soit le nom complet, soit l'abréviation. Le nombre minimum de lettres requis est le nombre de lettres de la version abrégée. Tous les caractères suivant immédiatement l'abréviation valide sont ignorés.

Exemple

Voici un exemple :

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

Résultat :

   Next Friday 
______________ 
05-OCT-35     

Abréviations des jours de la semaine

L'exemple ci-dessus utilise le nom complet du jour de la semaine. Dans l'exemple suivant, j'utilise plutôt l'abréviation :

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

Résultat :

   Next Friday 
______________ 
05-OCT-35     

Dans tous les cas, le résultat est le même.

En fait, tant que la première partie de l'argument contient une abréviation de jour de semaine valide, la fonction renverra la date du jour de semaine suivant qui correspond à cette abréviation. Tous les caractères suivant immédiatement l'abréviation valide sont ignorés. Ainsi, même si l'argument complet n'est pas réellement un nom de jour de semaine valide, tant que la première partie est une abréviation de jour de semaine valide, il renverra un résultat pour ce jour de semaine.

Exemples :

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;

Résultat :

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

Paramètres de langue

Comme mentionné, le jour de la semaine ou son abréviation doit être un jour de la semaine dans la langue de date de la session en cours.

Voici ce qui se passe lorsque je change la langue de ma session, puis que j'essaie d'exécuter à nouveau le même exemple :

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

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

Résultat :

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

Dans ce cas, ma langue est l'espagnol et nous devons donc indiquer le jour de la semaine en espagnol :

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

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

Résultat :

   Next Friday 
______________ 
05-OCT-35     

Arguments nuls

Si l'un des arguments est null , le résultat est 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;

Résultat :

      1       2 
_______ _______ 
null    null   

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Argument manquant

Appel NEXT_DAY() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT NEXT_DAY()
FROM DUAL;

Résultat :

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: