В Oracle Database, LAST_DAY()
функцията връща последния ден от месеца, който съдържа предоставената дата.
Той приема един аргумент, който е датата, за която искате да намерите последния ден от месеца.
Синтаксис
Синтаксисът е така:
LAST_DAY(date)
Където date
е изразът за дата, за който искате да намерите последния ден от месеца.
Пример
Ето един пример:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Резултат:
28-FEB-30
В този случай използваме дата през февруари. Както се оказва, февруари има 28 дни в тази година.
Ето какво се случва, ако увеличим датата до следващата високосна година:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Резултат:
29-FEB-32
Последният ден от месеца се дефинира от параметъра на сесията NLS_CALENDAR
. Вижте как да проверите стойностите на параметрите на NLS, за да разберете кой календар използва вашата сесия. Моят използва григорианския календар.
Освен това датата се връща във формата, който е посочен за вашата сесия. В този пример моята сесия използва формата по подразбиране, когато NLS_TERRITORY
параметърът е зададен на AMERICA
. Винаги можете да промените форматите за дата и час на вашата сесия, ако желаете.
Други стойности за дата и час
Работи и с други стойности за дата и час, като TIMESTAMP
и т.н.:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Резултат:
28-FEB-30
Типът на връщането обаче винаги е DATE
, независимо от типа данни на аргумента.
Дати извън обхвата
Нулевите дати и други дати извън диапазона водят до грешка.
Пример:
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Резултат:
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
Както се казва в съобщението за грешка, (цялата) година трябва да е между -4713
и +9999
, а не 0
.
Текуща дата
Можем да предадем SYSDATE
като аргумент datetime, за да използвате текущата дата:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Резултат:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Липсващ аргумент
Извикване на LAST_DAY()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT LAST_DAY()
FROM DUAL;
Резултат:
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: