Dans Oracle Database, le LAST_DAY()
renvoie le dernier jour du mois qui contient la date fournie.
Il accepte un argument, qui est la date pour laquelle vous voulez trouver le dernier jour du mois.
Syntaxe
La syntaxe ressemble à ceci :
LAST_DAY(date)
Où date
est l'expression de date pour laquelle vous souhaitez trouver le dernier jour du mois.
Exemple
Voici un exemple :
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Résultat :
28-FEV-30
Dans ce cas, nous utilisons une date en février. Il s'avère que février compte 28 jours cette année-là.
Voici ce qui se passe si nous incrémentons la date à l'année bissextile suivante :
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Résultat :
29-FEV-32
Le dernier jour du mois est défini par le paramètre de session NLS_CALENDAR
. Voir Comment vérifier les valeurs des paramètres NLS pour savoir quel calendrier votre session utilise. Le mien utilise le calendrier grégorien.
De plus, la date est renvoyée dans le format spécifié pour votre session. Dans cet exemple, ma session utilise le format par défaut lorsque le NLS_TERRITORY
le paramètre est défini sur AMERICA
. Vous pouvez toujours modifier les formats de date et d'heure de votre session si vous le souhaitez.
Autres valeurs DateHeure
Cela fonctionne également avec d'autres valeurs datetime, telles que TIMESTAMP
, etc :
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Résultat :
28-FEV-30
Cependant, le type de retour est toujours DATE
, quel que soit le type de données de l'argument.
Dates hors plage
Les dates nulles et les autres dates hors plage entraînent une erreur.
Exemple :
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Résultat :
Erreur commençant à la ligne :1 dans la commande -SELECT LAST_DAY(DATE '0000-00-00')FROM DUALError à la ligne de commande :1 Colonne :22Error report -SQL Error :ORA-01841 :(full) year must be between -4713 et +9999, et non 001841. 00000 - "L'année (complète) doit être comprise entre -4713 et +9999, et non 0">Comme l'indique le message d'erreur, l'année (complète) doit être comprise entre
-4713
et+9999
, et ne pas être0
.Date actuelle
Nous pouvons passer
SYSDATE
comme argument datetime pour utiliser la date actuelle :SELECT SYSDATE, LAST_DAY(SYSDATE) FROM DUAL;
Résultat :
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21Argument manquant
Appel
LAST_DAY()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :SELECT LAST_DAY() FROM DUAL;
Résultat :
Erreur commençant à la ligne :1 dans la commande -SELECT LAST_DAY()FROM DUALError à la ligne de commande :1 Colonne :8Error report -SQL Error :ORA-00909 :nombre d'arguments 00909 non valide. 00000 - "nombre d'arguments invalide"*Cause :*Action :