sql >> Database teknologi >  >> RDS >> Oracle

Sådan får du den sidste dag i måneden i Oracle

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

  1. Sådan opretter du SQL-spor for at fange SQL Server-hændelser

  2. Hvad betyder importfejl:Symbol ikke fundet:_PQencryptPasswordConn, og hvordan retter jeg det?

  3. MySQL-ydelse:MySQL/MariaDB-indekser

  4. ROLLBACK hændelsestriggere i postgresql