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

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

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избор на система за съхранение:Aria

  2. Ръководство за поточно репликация на клъстер на MySQL Galera:част втора

  3. Множество подчинени устройства за отложена репликация за аварийно възстановяване с нисък RTO

  4. Как работи COERCIBILITY() в MariaDB

  5. MariaDB RTRIM() срещу RTRIM_ORACLE():Каква е разликата?