sql >> Databáze >  >> RDS >> Oracle

Jak získat poslední den v měsíci v Oracle

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

  1. Jaký je nejlepší postup pro vložení záznamu, pokud ještě neexistuje?

  2. Indexy MySQL – jaké jsou nejlepší postupy?

  3. Úvod do PostgreSQL

  4. Nejbližší zápas, část 1