I Oracle Database, LAST_DAY()
funktion returnerar den sista dagen i månaden som innehåller det angivna datumet.
Den accepterar ett argument, vilket är det datum för vilket du vill hitta den sista dagen i månaden.
Syntax
Syntaxen ser ut så här:
LAST_DAY(date)
Där date
är det datumuttryck som du vill hitta den sista dagen i månaden.
Exempel
Här är ett exempel:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Resultat:
28-FEB-30
I det här fallet använder vi ett datum i februari. Som det visar sig har februari 28 dagar det året.
Så här händer om vi ökar datumet till nästa skottår:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Resultat:
29-FEB-32
Den sista dagen i månaden definieras av sessionsparametern NLS_CALENDAR
. Se Hur du kontrollerar värdena för NLS-parametrarna för att ta reda på vilken kalender din session använder. Min använder den gregorianska kalendern.
Datumet returneras också i det format som har angetts för din session. I det här exemplet använder min session standardformatet för när NLS_TERRITORY
parametern är inställd på AMERICA
. Du kan alltid ändra sessionens datum- och tidsformat om du så önskar.
Andra datum och tid värden
Det fungerar också med andra datum och tid-värden, såsom TIMESTAMP
osv:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Resultat:
28-FEB-30
Returtypen är dock alltid DATE
, oavsett datatypen för argumentet.
Datum utanför intervallet
Noll datum och andra datum utanför intervallet resulterar i ett fel.
Exempel:
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Resultat:
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
Som felmeddelandet anger måste (hela) året vara mellan -4713
och +9999
, och inte vara 0
.
Aktuellt datum
Vi kan skicka SYSDATE
som datetime-argument för att använda det aktuella datumet:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Resultat:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Argument saknas
Ringer LAST_DAY()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT LAST_DAY()
FROM DUAL;
Resultat:
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: