Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere l'ultimo giorno del mese in Oracle

In Oracle Database possiamo usare LAST_DAY() funzione per restituire l'ultimo giorno di un determinato mese. Può essere l'ultimo giorno del mese corrente o l'ultimo giorno del mese in base a una data specificata.

Esempio

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

Risultato:

28-FEB-35

L'ultimo giorno del mese è definito dal parametro di sessione NLS_CALENDAR . Vedi Come controllare i valori dei parametri NLS per scoprire quale calendario sta utilizzando la tua sessione. Il mio usa il calendario gregoriano.

Ecco cosa succede spostando la data in avanti di un anno:

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

Risultato:

29-FEB-36

L'anno successivo è bisestile, quindi otteniamo 29 giorni nel febbraio di quell'anno.

Nota che il LAST_DAY() la funzione restituisce un DATE valore. Questo è vero anche se passiamo un TIMESTAMP valore:

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

Risultato:

31-JUL-36

Mese corrente

Questo esempio ottiene l'ultimo giorno del mese corrente:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Risultato:

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

In questo caso ho usato SYSDATE per la data corrente.

Il prossimo mese

Possiamo usare il ADD_MONTHS() funzione per aggiungere uno o più mesi alla data corrente:

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

Risultato:

SYSDATE ULTIMO_GIORNO(AGGIUNGI_MESI(SYSDATE,1))
12-APR-22 31-MAGGIO-22

In questo caso, abbiamo l'ultimo giorno del mese prossimo.

Il mese scorso

Possiamo aggiungere un valore negativo per ottenere l'ultimo giorno di un mese precedente:

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

Risultato:

SYSDATE ULTIMO_GIORNO(AGGIUNGI_MESI(SYSDATE,-1))
12-APR-22 31-MAR-22