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)
Où 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: