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

Как работи LAST_DAY() в MariaDB

В MariaDB, LAST_DAY() е вградена функция за дата и час, която връща последния ден от месеца за дадена дата.

Той приема един аргумент, който е датата, за която искате да намерите последния ден от месеца.

Синтаксис

Синтаксисът е така:

LAST_DAY(date) 

Където date е изразът за дата, за който искате да намерите последния ден от месеца.

Пример

Ето един пример:

SELECT LAST_DAY('2030-02-01'); 

Резултат:

+-----------------------+| LAST_DAY('2030-02-01') |+-----------------------+| 2030-02-28 |+-----------------------+

В този случай използваме дата през февруари. Както се оказва, февруари има 28 дни в тази година.

Ето какво се случва, ако увеличим датата до следващата високосна година:

SELECT LAST_DAY('2032-02-01'); 

Резултат:

+-----------------------+| LAST_DAY('2032-02-01') |+-----------------------+| 2032-02-29 |+-----------------------+

Стойности за дата и час

Работи и със стойности за дата и час:

SELECT LAST_DAY('2030-02-01 10:30:45'); 

Резултат:

+--------------------------------+| LAST_DAY('2030-02-01 10:30:45') |+-------------------------------- +| 2030-02-28 |+--------------------------------+

Нулеви дати

Нулевите дати водят до null .

Пример:

SELECT LAST_DAY('0000-00-00'); 

Резултат:

+-----------------------+| LAST_DAY('0000-00-00') |+-----------------------+| NULL |+------------------------+

Числови дати

Възможно е също да предавате дати като число, стига да има смисъл като дата.

Пример

SELECT LAST_DAY(20301125); 

Резултат:

+-------------------+| ПОСЛЕДЕН_ДЕН(20301125) |+-------------------+| 2030-11-30 |+-------------------+

Или дори следното (което използва двуцифрена година):

SELECT LAST_DAY(301125); 

Резултат:

+-----------------+| ПОСЛЕДЕН_ДЕН(301125) |+------------------+| 2030-11-30 |+-----------------+

Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от деня до невалиден ден:

SELECT LAST_DAY(20301135); 

Резултат:

+-------------------+| ПОСЛЕДЕН_ДЕН(20301135) |+-------------------+| NULL |+-------------------+1 ред в комплект, 1 предупреждение (0,000 сек)

Можем да проверим предупреждението по следния начин:

SHOW WARNINGS; 

Резултат:

+--------+------+---------------------------- ---------+| Ниво | Код | Съобщение |+--------+------+------------------------------ --------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'20301135' |+--------+------+------------------------ --------------+

Други ограничители

Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:

SELECT 
    LAST_DAY('2030/06/25'),
    LAST_DAY('2030,06,25'),
    LAST_DAY('2030:06:25'),
    LAST_DAY('2030;06!25'); 

Резултат (с помощта на вертикален изход):

LAST_DAY('2030/06/25'):2030-06-30LAST_DAY('2030,06,25'):2030-06-30LAST_DAY('2030:06:25'):2030-06-30LAST_DAY '2030;06!25'):2030-06-30

Текуща дата

Можем да предадем NOW() като аргумент datetime, за да използвате текущата дата:

SELECT 
    NOW(),
    LAST_DAY(NOW()); 

Резултат:

<пред>+---------------------+----------------+| СЕГА() | ПОСЛЕДЕН_ДЕН(СЕГА()) |+---------------------+----------------+| 2021-05-18 09:39:01 | 31.05.2021 |+---------------------+----------------+

Невалидни аргументи

Когато се подаде невалиден аргумент, LAST_DAY() връща null :

SELECT LAST_DAY('2030-65-78'); 

Резултат:

+-----------------------+| LAST_DAY('2030-65-78') |+-----------------------+| NULL |+-----------------------+1 ред в комплект, 1 предупреждение (0,000 сек)

Проверете предупреждението:

SHOW WARNINGS; 

Резултат:

+--------+------+---------------------------- -----------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ----------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'2030-65-78' |+---------+------+------------------- --------------------+

Липсващ аргумент

Извикване на LAST_DAY() с грешен брой аргументи или без подаване на аргументи, води до грешка:

SELECT LAST_DAY(); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „LAST_DAY“

И още един пример:

SELECT LAST_DAY('2030-12-10', '2031-12-10'); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „LAST_DAY“

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част втора

  2. Разбиране на индексите в MySQL:част трета

  3. Използване на Sysbench за генериране на тестови данни за разчленена таблица в MySQL

  4. Представяне на мониторинг на база данни, базиран на агенти с ClusterControl 1.7

  5. MariaDB JSON_QUOTE() Обяснено