В MariaDB, WEEKOFYEAR()
е вградена функция за дата и час, която връща календарната седмица на дадена дата като число в диапазона от 1
до 53
.
Това е еквивалентно на използването на WEEK()
функционира в режим 3 и следователно резултатът му е в съответствие с ISO 8601:1988.
Приема един аргумент; датата, от която искате да извлечете седмицата.
Синтаксис
Синтаксисът е така:
WEEKOFYEAR(date)
Където date
е изразът за дата, от който да получите календарната седмица.
Пример
Ето един пример:
SELECT WEEKOFYEAR('2030-01-01');
Резултат:
+-------------------------+| WEEKOFYEAR('2030-01-01') |+--------------------------+| 1 |+-------------------------+
Това е еквивалентно да направите следното:
SELECT WEEK('2030-01-01', 3);
Резултат:
<пред>+-----------------------+| WEEK('2030-01-01', 3) |+-----------------------+| 1 |+-----------------------+Стойности за дата и час
WEEKOFYEAR()
функцията също работи със стойности за дата и час:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Резултат:
+---------------------------------+| WEEKOFYEAR('2030-08-01 10:30:45') |+-------------------------------- --+| 31 |+----------------------------------+
Числови дати
Възможно е също да предавате дати като число, стига да има смисъл като дата.
Пример
SELECT WEEKOFYEAR(20301125);
Резултат:
+---------------------+| СЕДМИЧНА ГОДИНА(20301125) |+---------------------+| 48 |+----------------------+
Или дори следното (което използва двуцифрена година):
SELECT WEEKOFYEAR(301125);
Резултат:
+-------------------+| СЕДМИЧНА ГОДИНА(301125) |+-------------------+| 48 |+-------------------+
Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от деня до невалиден ден:
SELECT WEEKOFYEAR(20301135);
Резултат:
+---------------------+| СЕДМИЧНА ГОДИНА(20301135) |+---------------------+| NULL |+---------------------+1 ред в комплект, 1 предупреждение (0,000 сек.)
Върна null
с предупреждение.
Нека разгледаме предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ---------+| Ниво | Код | Съобщение |+--------+------+------------------------------ --------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'20301135' |+--------+------+------------------------ --------------+
Други ограничители
Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:
SELECT
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Резултат (с помощта на вертикален изход):
WEEKOFYEAR('2030/06/25'):26WEEKOFYEAR('2030,06,25'):26WEEKOFYEAR('2030:06:25'):26WEEKOFYEAR('2030;06!25'):26предварително>Текуща дата
Можем да предадем
NOW()
като аргумент datetime, за да използвате текущата дата:SELECT NOW(), WEEKOFYEAR(NOW());
Резултат:
<пред>+---------------------+-------------------+| СЕГА() | СЕДМИЧНА ГОДИНА(СЕГА()) |+---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+---------------------+-------------------+
Невалидни аргументи
Когато се подаде невалиден аргумент, WEEKOFYEAR()
връща null
:
SELECT WEEKOFYEAR('2030-65-78');
Резултат:
+-------------------------+| WEEKOFYEAR('2030-65-78') |+--------------------------+| NULL |+-------------------------+1 ред в комплект, 1 предупреждение (0,000 сек.)
Нека покажем предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- -----------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ----------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'2030-65-78' |+---------+------+------------------- --------------------+
Липсващ аргумент
Извикване на WEEKOFYEAR()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT WEEKOFYEAR();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „WEEKOFYEAR“
И още един пример:
SELECT WEEKOFYEAR('2030-12-10', 1);
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „WEEKOFYEAR“