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

Comment obtenir le dernier jour du mois dans Oracle

Dans Oracle Database, nous pouvons utiliser le LAST_DAY() fonction pour renvoyer le dernier jour d'un mois donné. Cela peut être le dernier jour du mois en cours ou le dernier jour du mois basé sur une date spécifiée.

Exemple

SELECT LAST_DAY(date '2035-02-15')
FROM DUAL;

Résultat :

28-FEB-35

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.

Voici ce qui se passe lorsque nous avançons la date d'un an :

SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;

Résultat :

29-FEB-36

L'année suivante est une année bissextile, et nous obtenons donc 29 jours en février de cette année.

Notez que le LAST_DAY() la fonction renvoie une DATE valeur. Ceci est vrai même si nous passons un TIMESTAMP valeur :

SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;

Résultat :

31-JUL-36

Mois en cours

Cet exemple obtient le dernier jour du mois en cours :

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Résultat :

SYSDATE LAST_DAY(SYSDATE)
12-APR-22 30-AVR-22

Dans ce cas, j'ai utilisé SYSDATE pour la date actuelle.

Le mois prochain

Nous pouvons utiliser le ADD_MONTHS() fonction pour ajouter un ou plusieurs mois à la date actuelle :

SELECT 
    SYSDATE,
    LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;

Résultat :

SYSDATE DERNIER_JOUR(ADD_MONTHS(SYSDATE,1))
12-APR-22 31-MAI-22

Dans ce cas, nous avons le dernier jour du mois prochain.

Le mois dernier

Nous pouvons ajouter une valeur négative pour obtenir le dernier jour d'un mois précédent :

SELECT 
    SYSDATE,
    LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;

Résultat :

SYSDATE DERNIER_JOUR(ADD_MONTHS(SYSDATE,-1))
12-APR-22 31-MAR-22