In Oracle Database kunnen we de LAST_DAY()
. gebruiken functie om de laatste dag van een bepaalde maand te retourneren. Dit kan de laatste dag van de huidige maand zijn of de laatste dag van de maand op basis van een opgegeven datum.
Voorbeeld
SELECT LAST_DAY(date '2035-02-15')
FROM DUAL;
Resultaat:
28-FEB-35
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.
Dit is wat er gebeurt als we de datum een jaar vooruitschuiven:
SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;
Resultaat:
29-FEB-36
Het volgende jaar is een schrikkeljaar en dus krijgen we dat jaar 29 dagen in februari.
Merk op dat de LAST_DAY()
functie retourneert een DATE
waarde. Dit is zelfs waar als we een TIMESTAMP
pass doorgeven waarde:
SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;
Resultaat:
31-JUL-36
Huidige maand
Dit voorbeeld krijgt de laatste dag van de huidige maand:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Resultaat:
SYSDATE | LAST_DAY(SYSDATE) |
---|---|
22-APR-22 | 30-APR-22 |
In dit geval gebruikte ik SYSDATE
voor de huidige datum.
Volgende maand
We kunnen de ADD_MONTHS()
. gebruiken functie om een of meer maanden op te tellen bij de huidige datum:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;
Resultaat:
SYSDATE | LAST_DAY(ADD_MONTHS(SYSDATE,1)) |
---|---|
22-APR-22 | 31-MEI-22 |
In dit geval hebben we de laatste dag van volgende maand.
Vorige maand
We kunnen een negatieve waarde toevoegen om de laatste dag van een vorige maand te krijgen:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;
Resultaat:
SYSDATE | LAST_DAY(ADD_MONTHS(SYSDATE,-1)) |
---|---|
22-APR-22 | 31-MAR-22 |