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

Funkce LAST_DAY() v Oracle

V databázi Oracle je LAST_DAY() Funkce vrací poslední den v měsíci, který obsahuje zadané datum.

Přijímá jeden argument, což je datum, pro které chcete najít poslední den v měsíci.

Syntaxe

Syntaxe vypadá takto:

LAST_DAY(date)

Kde date je výraz data, pro který chcete najít poslední den v měsíci.

Příklad

Zde je příklad:

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

Výsledek:

28-FEB-30

V tomto případě používáme datum v únoru. Jak se ukázalo, únor má v tom roce 28 dní.

Zde je to, co se stane, když zvýšíme datum na další přestupný rok:

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

Výsledek:

29-FEB-32

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ář.

Datum je také vráceno ve formátu, který je určen pro vaši relaci. V tomto příkladu moje relace používá výchozí formát pro NLS_TERRITORY parametr je nastaven na AMERICA . Pokud si to přejete, můžete vždy změnit formát data a času relace.

Další hodnoty data a času

Funguje také s jinými hodnotami data a času, jako je TIMESTAMP atd.:

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

Výsledek:

28-FEB-30

Návratový typ je však vždy DATE , bez ohledu na datový typ argumentu.

Data mimo rozsah

Nulová data a jiná data mimo rozsah vedou k chybě.

Příklad:

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

Výsledek:

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

Jak uvádí chybová zpráva, (celý) rok musí být mezi -4713 a +9999 a nesmí být 0 .

Aktuální datum

Můžeme předat SYSDATE jako argument datetime pro použití aktuálního data:

SELECT 
    SYSDATE,
    LAST_DAY(SYSDATE)
FROM DUAL;

Výsledek:

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

Chybí argument

Volání LAST_DAY() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT LAST_DAY()
FROM DUAL;

Výsledek:

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. Použití regulárního výrazu ve WHERE v Postgresu

  2. MySQL Zobrazit uživatele

  3. PostgreSQL High Availability instalací Patroni

  4. Odečtěte měsíc od data v MariaDB