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: