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

LAST_DAY()-Funktion in Oracle

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: