Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция LAST_DAY() в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle JDBC ojdbc6 Jar като зависимост на Maven

  2. как да вмъкна текуща дата в поле ДАТА във формат dd/mm/yyyy в oracle

  3. NLS_LANG настройка за JDBC тънък драйвер?

  4. Масив в клауза IN() oracle PLSQL

  5. PL/SQL, как да избягам от единични кавички в низ?