MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como WEEKOFYEAR() funciona no MariaDB


No MariaDB, WEEKOFYEAR() é uma função de data e hora integrada que retorna a semana do calendário de uma determinada data como um número no intervalo de 1 para 53 .

É o equivalente a usar o WEEK() função no modo 3 e, portanto, seu resultado está de acordo com a ISO 8601:1988.

Ele aceita um argumento; a data da qual você deseja extrair a semana.

Sintaxe


A sintaxe fica assim:
WEEKOFYEAR(date) 

Onde date é a expressão de data da qual obter a semana do calendário.

Exemplo


Aqui está um exemplo:
SELECT WEEKOFYEAR('2030-01-01'); 

Resultado:
+--------------------------+| WEEKOFYEAR('2030-01-01') |+--------------------------+| 1 |+--------------------------+

É o equivalente a fazer o seguinte:
SELECT WEEK('2030-01-01', 3); 

Resultado:
+-----------------------+| SEMANA('2030-01-01', 3) |+-----------------------+| 1 |+-----------------------+

Valores de data e hora


O WEEKOFYEAR() A função também funciona com valores de data e hora:
SELECT WEEKOFYEAR('2030-08-01 10:30:45'); 

Resultado:
+-----------------------------------+| WEEKOFYEAR('2030-08-01 10:30:45') |+--------------------------------- --+| 31 |+-----------------------------------+

Datas numéricas


Também é possível passar datas como um número, desde que faça sentido como uma data.

Exemplo
SELECT WEEKOFYEAR(20301125); 

Resultado:
+----------------------+| SEMANAANO(20301125) |+-----------------------+| 48 |+----------------------+

Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT WEEKOFYEAR(301125); 

Resultado:
+--------------------+| SEMANAANO(301125) |+--------------------+| 48 |+--------------------+

Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT WEEKOFYEAR(20301135); 

Resultado:
+----------------------+| SEMANAANO(20301135) |+----------------------+| NULL |+----------------------+1 linha no conjunto, 1 aviso (0,000 seg)

Ele retornou null com um aviso.

Vejamos o aviso:
SHOW WARNINGS; 

Resultado:
+---------+------+----------------------------- ---------+| Nível | Código | Mensagem |+---------+------+------------------- --------+| Aviso | 1292 | Valor de data e hora incorreto:'20301135' |+---------+------+------------------------ --------------+

Outros delimitadores


Você pode usar outros delimitadores para a data. O MariaDB é bastante tolerante quando se trata de delimitadores de datas. Aqui estão alguns exemplos válidos:
SELECT 
    WEEKOFYEAR('2030/06/25'),
    WEEKOFYEAR('2030,06,25'),
    WEEKOFYEAR('2030:06:25'),
    WEEKOFYEAR('2030;06!25'); 

Resultado (usando saída vertical):
WEEKOFYEAR('2030/06/25'):26WEEKOFYEAR('2030,06,25'):26WEEKOFYEAR('2030:06:25'):26WEEKOFYEAR('2030;06!25'):26 

Data atual


Podemos passar NOW() como argumento datetime para usar a data atual:
SELECT 
    NOW(),
    WEEKOFYEAR(NOW()); 

Resultado:
+---------------------+-------------------+| AGORA() | WEEKOFYEAR(AGORA()) |+---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+---------------------+-------------------+

Argumentos inválidos


Quando passado um argumento inválido, WEEKOFYEAR() retorna null :
SELECT WEEKOFYEAR('2030-65-78'); 

Resultado:
+--------------------------+| WEEKOFYEAR('2030-65-78') |+--------------------------+| NULL |+--------------------------+1 linha no conjunto, 1 aviso (0,000 seg)

Vamos mostrar o aviso:
SHOW WARNINGS; 

Resultado:
+---------+------+----------------------------- -----------+| Nível | Código | Mensagem |+---------+------+------------------- ----------+| Aviso | 1292 | Valor de data e hora incorreto:'2030-65-78' |+---------+------+-------------------- --------------------+

Argumento ausente


Chamando WEEKOFYEAR() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT WEEKOFYEAR(); 

Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'WEEKOFYEAR'

E outro exemplo:
SELECT WEEKOFYEAR('2030-12-10', 1); 

Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'WEEKOFYEAR'