I Oracle Database er LAST_DAY()
funktion returnerer den sidste dag i måneden, der indeholder den angivne dato.
Den accepterer ét argument, som er den dato, du ønsker at finde den sidste dag i måneden.
Syntaks
Syntaksen ser sådan ud:
LAST_DAY(date)
Hvor date
er det datoudtryk, som du vil finde den sidste dag i måneden.
Eksempel
Her er et eksempel:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Resultat:
28-FEB-30
I dette tilfælde bruger vi en dato i februar. Som det viser sig, har februar 28 dage i det år.
Her er, hvad der sker, hvis vi øger datoen til det næste skudår:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Resultat:
29-FEB-32
Den sidste dag i måneden er defineret af sessionsparameteren NLS_CALENDAR
. Se, hvordan du tjekker værdierne af NLS-parametrene for at finde ud af, hvilken kalender din session bruger. Min bruger den gregorianske kalender.
Også datoen returneres i det format, der er angivet for din session. I dette eksempel bruger min session standardformatet for, når NLS_TERRITORY
parameter er indstillet til AMERICA
. Du kan altid ændre din sessions dato- og tidsformater, hvis du ønsker det.
Andre dato-tidsværdier
Det fungerer også sammen med andre dato-tidsværdier, såsom TIMESTAMP
osv.:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Resultat:
28-FEB-30
Returtypen er dog altid DATE
, uanset argumentets datatype.
Datoer uden for rækkevidde
Nuldatoer og andre datoer uden for intervallet resulterer i en fejl.
Eksempel:
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 fejlmeddelelsen angiver, skal (hele) året være mellem -4713
og +9999
, og ikke være 0
.
Aktuel dato
Vi kan sende SYSDATE
som datetime-argument for at bruge den aktuelle dato:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Resultat:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Manglende argument
Kalder LAST_DAY()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
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: