Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erhalten Sie den letzten Tag des Monats in Oracle

In Oracle Database können wir den LAST_DAY() verwenden Funktion, um den letzten Tag eines bestimmten Monats zurückzugeben. Dies kann der letzte Tag des aktuellen Monats oder der letzte Tag des Monats basierend auf einem bestimmten Datum sein.

Beispiel

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

Ergebnis:

28-FEB-35

Der letzte Tag des Monats wird durch den Sitzungsparameter NLS_CALENDAR definiert . Siehe So überprüfen Sie die Werte der NLS-Parameter, um herauszufinden, welchen Kalender Ihre Sitzung verwendet. Meiner verwendet den gregorianischen Kalender.

Folgendes passiert, wenn wir das Datum um ein Jahr vorrücken:

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

Ergebnis:

29-FEB-36

Das folgende Jahr ist ein Schaltjahr, daher haben wir in diesem Jahr 29 Tage im Februar.

Beachten Sie, dass LAST_DAY() Funktion gibt ein DATE zurück Wert. Dies gilt auch dann, wenn wir einen TIMESTAMP übergeben Wert:

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

Ergebnis:

31-JUL-36

Aktueller Monat

Dieses Beispiel erhält den letzten Tag des aktuellen Monats:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Ergebnis:

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

In diesem Fall habe ich SYSDATE verwendet für das aktuelle Datum.

Nächster Monat

Wir können ADD_MONTHS() verwenden Funktion zum Hinzufügen eines oder mehrerer Monate zum aktuellen Datum:

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

Ergebnis:

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

In diesem Fall haben wir den letzten Tag des nächsten Monats.

Letzter Monat

Wir können einen negativen Wert hinzufügen, um den letzten Tag eines vorherigen Monats zu erhalten:

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

Ergebnis:

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