В MariaDB, QUARTER()
е вградена функция за дата и час, която връща тримесечието от даден израз за дата.
Той приема един аргумент, който е датата, от която искате да извлечете тримесечието.
Връща тримесечието като число в диапазона 1
до 4
. За дати с нула месеца (напр. 0000-00-00
или 2025-00-00
), резултатът е 0
.
Синтаксис
Синтаксисът е така:
QUARTER(date)
Където date
е изразът за дата, от който да получите тримесечието.
Пример
Ето един пример:
SELECT QUARTER('2030-08-01');
Резултат:
<пред>+-----------------------+| КВАРТАЛ('2030-08-01') |+-----------------------+| 3 |+-----------------------+Стойности за дата и час
Работи и със стойности за дата и час:
SELECT QUARTER('2030-08-01 10:30:45');
Резултат:
+--------------------------------+| QUARTER('2030-08-01 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+
Нула месеца
Датите с нула месеца водят до 0
.
Пример:
SELECT QUARTER('2030-00-00');
Резултат:
<пред>+-----------------------+| QUARTER('2030-00-00') |+-----------------------+| 0 |+-----------------------+Числови дати
Възможно е също да предавате дати като число, стига да има смисъл като дата.
Пример
SELECT QUARTER(20301125);
Резултат:
+------------------+| КВАРТАЛ(20301125) |+------------------+| 4 |+------------------+
Или дори следното (което използва двуцифрена година):
SELECT QUARTER(301125);
Резултат:
+-----------------+| КВАРТАЛ(301125) |+----------------+| 4 |+-----------------+
Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от деня до невалиден ден:
SELECT QUARTER(20301135);
Резултат:
+------------------+| КВАРТАЛ(20301135) |+------------------+| NULL |+------------------+1 ред в комплект, 1 предупреждение (0,000 сек.)
Можем да проверим предупреждението по следния начин:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ---------+| Ниво | Код | Съобщение |+--------+------+------------------------------ --------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'20301135' |+--------+------+------------------------ --------------+
Други ограничители
Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:
SELECT
QUARTER('2030/06/25'),
QUARTER('2030,06,25'),
QUARTER('2030:06:25'),
QUARTER('2030;06!25');
Резултат (с помощта на вертикален изход):
QUARTER('2030/06/25'):2QUARTER('2030,06,25'):2QUARTER('2030:06:25'):2QUARTER('2030;06!25'):2предварително>Текуща дата
Можем да предадем
NOW()
като аргумент datetime, за да използвате текущата дата:SELECT NOW(), QUARTER(NOW());
Резултат:
+---------------------+----------------+| СЕГА() | Квартал(СЕГА()) |+---------------------+----------------+| 2021-05-18 09:23:27 | 2 |+---------------------+----------------+Невалидни аргументи
Когато се подаде невалиден аргумент,
QUARTER()
връщаnull
:SELECT QUARTER('2030-65-78');
Резултат:
<пред>+-----------------------+| QUARTER('2030-65-78') |+-----------------------+| NULL |+-----------------------+1 ред в комплект, 1 предупреждение (0,000 сек.)
Проверете предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- -----------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ----------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'2030-65-78' |+---------+------+------------------- --------------------+
Липсващ аргумент
Извикване на QUARTER()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT QUARTER();
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1
И още един пример:
SELECT QUARTER('2030-12-10', '2031-12-10');
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB, за правилния синтаксис, който да използвате близо до „2031-12-10“)“ на ред 1