In der Oracle-Datenbank der LAST_DAY()
Die Funktion gibt den letzten Tag des Monats zurück, der das angegebene Datum enthält.
Es akzeptiert ein Argument, nämlich das Datum, für das Sie den letzten Tag des Monats finden möchten.
Syntax
Die Syntax lautet wie folgt:
LAST_DAY(date)
Wobei date
ist der Datumsausdruck, für den Sie den letzten Tag des Monats finden möchten.
Beispiel
Hier ist ein Beispiel:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Ergebnis:
28-FEB-30
In diesem Fall verwenden wir ein Datum im Februar. Wie sich herausstellt, hat der Februar in diesem Jahr 28 Tage.
Folgendes passiert, wenn wir das Datum auf das nächste Schaltjahr erhöhen:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Ergebnis:
29-FEB-32
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.
Außerdem wird das Datum in dem für Ihre Sitzung angegebenen Format zurückgegeben. In diesem Beispiel verwendet meine Sitzung das Standardformat für NLS_TERRITORY
Parameter ist auf AMERICA
gesetzt . Sie können die Datetime-Formate Ihrer Sitzung jederzeit ändern, wenn Sie dies wünschen.
Andere Datetime-Werte
Es funktioniert auch mit anderen datetime-Werten wie TIMESTAMP
, etc:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Ergebnis:
28-FEB-30
Der Rückgabetyp ist jedoch immer DATE
, unabhängig vom Datentyp des Arguments.
Außerhalb des Bereichs liegende Daten
Nulldaten und andere Daten außerhalb des zulässigen Bereichs führen zu einem Fehler.
Beispiel:
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LAST_DAY(DATE '0000-00-00') FROM DUAL Error at Command Line : 1 Column : 22 Error report - SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0 01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0" *Cause: Illegal year entered *Action: Input year in the specified range
Wie in der Fehlermeldung angegeben, muss das (vollständige) Jahr zwischen -4713
liegen und +9999
, und nicht 0
sein .
Aktuelles Datum
Wir können SYSDATE
übergeben als datetime-Argument, um das aktuelle Datum zu verwenden:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Ergebnis:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Fehlendes Argument
Aufruf von LAST_DAY()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT LAST_DAY()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT LAST_DAY() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: