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

Fonction LAST_DAY() dans Oracle

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) 

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 être 0 .

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-21 

Argument 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 :