sql >> Databasteknik >  >> RDS >> Oracle

LAST_DAY() Funktion i Oracle

I Oracle Database, LAST_DAY() funktion returnerar den sista dagen i månaden som innehåller det angivna datumet.

Den accepterar ett argument, vilket är det datum för vilket du vill hitta den sista dagen i månaden.

Syntax

Syntaxen ser ut så här:

LAST_DAY(date)

Där date är det datumuttryck som du vill hitta den sista dagen i månaden.

Exempel

Här är ett exempel:

SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;

Resultat:

28-FEB-30

I det här fallet använder vi ett datum i februari. Som det visar sig har februari 28 dagar det året.

Så här händer om vi ökar datumet till nästa skottår:

SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;

Resultat:

29-FEB-32

Den sista dagen i månaden definieras av sessionsparametern NLS_CALENDAR . Se Hur du kontrollerar värdena för NLS-parametrarna för att ta reda på vilken kalender din session använder. Min använder den gregorianska kalendern.

Datumet returneras också i det format som har angetts för din session. I det här exemplet använder min session standardformatet för när NLS_TERRITORY parametern är inställd på AMERICA . Du kan alltid ändra sessionens datum- och tidsformat om du så önskar.

Andra datum och tid värden

Det fungerar också med andra datum och tid-värden, såsom TIMESTAMP osv:

SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;

Resultat:

28-FEB-30

Returtypen är dock alltid DATE , oavsett datatypen för argumentet.

Datum utanför intervallet

Noll datum och andra datum utanför intervallet resulterar i ett fel.

Exempel:

SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL
Error at Command Line : 1 Column : 22
Error report -
SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
01841. 00000 -  "(full) year must be between -4713 and +9999, and not be 0"
*Cause:    Illegal year entered
*Action:   Input year in the specified range

Som felmeddelandet anger måste (hela) året vara mellan -4713 och +9999 , och inte vara 0 .

Aktuellt datum

Vi kan skicka SYSDATE som datetime-argument för att använda det aktuella datumet:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Resultat:

     SYSDATE    LAST_DAY(SYSDATE) 
____________ ____________________ 
12-AUG-21    31-AUG-21           

Argument saknas

Ringer LAST_DAY() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT LAST_DAY()
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT LAST_DAY()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Postgres-anslutningen har stängts fel i Spring Boot

  2. Mätning av faktisk MySQL-frågetid

  3. Omfattning av temporära tabeller i SQL Server

  4. Native JSON-stöd i MYSQL 5.7:vilka är fördelarna och nackdelarna med JSON-datatyp i MYSQL?