sql >> Base de Datos >  >> RDS >> Oracle

Cómo obtener el último día del mes en Oracle

En Oracle Database podemos usar el LAST_DAY() función para devolver el último día de un mes dado. Puede ser el último día del mes actual o el último día del mes según una fecha específica.

Ejemplo

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

Resultado:

28-FEB-35

El último día del mes está definido por el parámetro de sesión NLS_CALENDAR . Consulte Cómo verificar los valores de los parámetros NLS para averiguar qué calendario está utilizando su sesión. El mío usa el calendario gregoriano.

Esto es lo que sucede cuando adelantamos la fecha un año:

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

Resultado:

29-FEB-36

El año siguiente es un año bisiesto, por lo que tenemos 29 días en febrero de ese año.

Tenga en cuenta que el LAST_DAY() la función devuelve un DATE valor. Esto es cierto incluso si pasamos un TIMESTAMP valor:

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

Resultado:

31-JUL-36

Mes actual

Este ejemplo obtiene el último día del mes actual:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Resultado:

SYSDATE ÚLTIMO_DÍA(SYSDATE)
12-ABR-22 30-ABR-22

En este caso usé SYSDATE para la fecha actual.

Próximo mes

Podemos usar el ADD_MONTHS() función para agregar uno o más meses a la fecha actual:

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

Resultado:

SYSDATE ÚLTIMO_DÍA(AÑADIR_MESES(SYSDATE,1))
12-ABR-22 31-MAY-22

En este caso, tenemos el último día del próximo mes.

Mes pasado

Podemos agregar un valor negativo para obtener el último día de un mes anterior:

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

Resultado:

SYSDATE ÚLTIMO_DÍA(ADD_MONTHS(SYSDATE,-1))
12-ABR-22 31-MAR-22