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 |