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