V databázi Oracle můžeme použít LAST_DAY()
funkce vrátit poslední den daného měsíce. Může to být poslední den aktuálního měsíce nebo poslední den měsíce na základě zadaného data.
Příklad
SELECT LAST_DAY(date '2035-02-15')
FROM DUAL;
Výsledek:
28-FEB-35
Poslední den v měsíci je definován parametrem relace NLS_CALENDAR
. V části Jak zkontrolovat hodnoty parametrů NLS zjistíte, který kalendář vaše relace používá. Můj používá gregoriánský kalendář.
Když posuneme datum o rok dopředu:
SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;
Výsledek:
29-FEB-36
Následující rok je přestupným rokem, takže v únoru toho roku máme 29 dní.
Všimněte si, že LAST_DAY()
funkce vrací DATE
hodnota. To platí, i když předáme TIMESTAMP
hodnota:
SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;
Výsledek:
31-JUL-36
Aktuální měsíc
Tento příklad získá poslední den aktuálního měsíce:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Výsledek:
SYSDATE | LAST_DAY(SYSDATE) |
---|---|
12. dubna-22 | 30-42-22 |
V tomto případě jsem použil SYSDATE
pro aktuální datum.
Příští měsíc
Můžeme použít ADD_MONTHS()
funkce pro přidání jednoho nebo více měsíců k aktuálnímu datu:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;
Výsledek:
SYSDATE | POSLEDNÍ_DEN(ADD_MONTHS(SYSDATE,1)) |
---|---|
12. dubna-22 | 31-MAY-22 |
V tomto případě máme poslední den příštího měsíce.
Minulý měsíc
Můžeme přidat zápornou hodnotu, abychom získali poslední den předchozího měsíce:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;
Výsledek:
SYSDATE | POSLEDNÍ_DEN(ADD_MONTHS(SYSDATE,-1)) |
---|---|
12. dubna-22 | 31. března-22 |