Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter o último dia do mês no Oracle


No Oracle Database podemos usar o LAST_DAY() função para retornar o último dia de um determinado mês. Este pode ser o último dia do mês atual ou o último dia do mês com base em uma data especificada.

Exemplo

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

Resultado:
28-FEB-35

O último dia do mês é definido pelo parâmetro de sessão NLS_CALENDAR . Consulte Como verificar os valores dos parâmetros NLS para descobrir qual calendário sua sessão está usando. O meu está usando o calendário gregoriano.

Veja o que acontece quando avançamos a data em um ano:
SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;

Resultado:
29-FEB-36

O ano seguinte é um ano bissexto e, portanto, temos 29 dias em fevereiro daquele ano.

Observe que o LAST_DAY() função retorna um DATE valor. Isso é verdade mesmo se passarmos um TIMESTAMP valor:
SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;

Resultado:
31-JUL-36

Mês atual


Este exemplo obtém o último dia do mês atual:
SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

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

Neste caso eu usei SYSDATE para a data atual.

Próximo mês


Podemos usar o ADD_MONTHS() função para adicionar um ou mais meses à data atual:
SELECT 
    SYSDATE,
    LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;

Resultado:
SYSDATE LAST_DAY(ADD_MONTHS(SYSDATE,1))
12-APR-22 31-MAI-22

Neste caso, temos o último dia do próximo mês.

Último mês


Podemos adicionar um valor negativo para obter o último dia de um mês anterior:
SELECT 
    SYSDATE,
    LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;

Resultado:
SYSDATE LAST_DAY(ADD_MONTHS(SYSDATE,-1))
12-APR-22 31-MAR-22