I Oracle Database kan vi bruge LAST_DAY()
funktion for at returnere den sidste dag i en given måned. Dette kan være den sidste dag i den aktuelle måned eller den sidste dag i måneden baseret på en specificeret dato.
Eksempel
SELECT LAST_DAY(date '2035-02-15')
FROM DUAL;
Resultat:
28-FEB-35
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.
Her er, hvad der sker, når vi ruller datoen et år frem:
SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;
Resultat:
29-FEB-36
Det følgende år er et skudår, og derfor får vi 29 dage i februar det år.
Bemærk, at LAST_DAY()
funktion returnerer en DATE
værdi. Dette er sandt, selvom vi sender en TIMESTAMP
værdi:
SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;
Resultat:
31-JUL-36
Aktuel måned
Dette eksempel får den sidste dag i den aktuelle måned:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Resultat:
SYSDATE | LAST_DAY(SYSDATE) |
---|---|
12-APR-22 | 30-APR-22 |
I dette tilfælde brugte jeg SYSDATE
for den aktuelle dato.
Næste måned
Vi kan bruge ADD_MONTHS()
funktion for at tilføje en eller flere måneder til den aktuelle dato:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;
Resultat:
SYSDATE | LAST_DAY(ADD_MONTHS(SYSDATE,1)) |
---|---|
12-APR-22 | 31. MAJ-22. |
I dette tilfælde fik vi den sidste dag i næste måned.
Sidste måned
Vi kan tilføje en negativ værdi for at få den sidste dag i en foregående måned:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;
Resultat:
SYSDATE | LAST_DAY(ADD_MONTHS(SYSDATE,-1)) |
---|---|
12-APR-22 | 31-MAR-22 |