In Oracle Database, de LAST_DAY()
functie retourneert de laatste dag van de maand die de opgegeven datum bevat.
Het accepteert één argument, namelijk de datum waarvoor u de laatste dag van de maand wilt vinden.
Syntaxis
De syntaxis gaat als volgt:
LAST_DAY(date)
Waar date
is de datumuitdrukking waarvoor u de laatste dag van de maand wilt vinden.
Voorbeeld
Hier is een voorbeeld:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Resultaat:
28-FEB-30
In dit geval gebruiken we een datum in februari. Het blijkt dat februari in dat jaar 28 dagen heeft.
Dit gebeurt er als we de datum verhogen naar het volgende schrikkeljaar:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Resultaat:
29-FEB-32
De laatste dag van de maand wordt gedefinieerd door de sessieparameter NLS_CALENDAR
. Zie Hoe u de waarden van de NLS-parameters kunt controleren om erachter te komen welke agenda uw sessie gebruikt. De mijne gebruikt de Gregoriaanse kalender.
De datum wordt ook geretourneerd in het formaat dat is opgegeven voor uw sessie. In dit voorbeeld gebruikt mijn sessie het standaardformaat voor wanneer de NLS_TERRITORY
parameter is ingesteld op AMERICA
. Je kunt de datum- en tijdnotaties van je sessie altijd wijzigen als je dat wilt.
Andere datum/tijd-waarden
Het werkt ook met andere datetime-waarden, zoals TIMESTAMP
, enz:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Resultaat:
28-FEB-30
Het retourtype is echter altijd DATE
, ongeacht het gegevenstype van het argument.
Data buiten bereik
Nuldatums en andere datums die buiten het bereik vallen, resulteren in een fout.
Voorbeeld:
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Resultaat:
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
Zoals de foutmelding aangeeft, moet het (volledige) jaar tussen -4713
. zijn en +9999
, en niet 0
. zijn .
Huidige datum
We kunnen SYSDATE
doorgeven als het datetime-argument om de huidige datum te gebruiken:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Resultaat:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Ontbrekend argument
Bellen LAST_DAY()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT LAST_DAY()
FROM DUAL;
Resultaat:
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: