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

Como DAYOFWEEK() funciona no MariaDB


No MariaDB, DAYOFWEEK() é uma função interna de data e hora que retorna o dia da semana a partir de uma determinada data.

Ele aceita um argumento, que é a data da qual você deseja extrair o dia da semana.

Ele retorna o dia como um número. A numeração do índice segue o padrão ODBC (1 =domingo, 2 =segunda-feira, etc). Isso contrasta com WEEKDAY() , onde 0 =segunda-feira, 1 =terça-feira, etc.

Sintaxe


A sintaxe fica assim:
DAYOFWEEK(date) 

Onde date é a data para obter o dia.

Exemplo


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

Resultado:
+-------------------------+| DIA DA SEMANA('2030-01-25') |+-------------------------+| 6 |+-------------------------+

Comparado com o nome do dia


Aqui está outro, junto com DAYNAME() para retornar o nome do dia:
SELECT 
    DAYOFWEEK('2030-01-20'),
    DAYNAME('2030-01-20'); 

Resultado:
+-------------------------+-------------------- ---+| DIA DA SEMANA('2030-01-20') | DAYNAME('2030-01-20') |+-----------------------------+------------ -----------+| 1 | Domingo |+-------------------------+--------------------- --+

Como mencionado, a numeração do índice começa em 1 para domingo.

Aqui é sábado:
SELECT 
    DAYOFWEEK('2030-01-19'),
    DAYNAME('2030-01-19'); 

Resultado:
+-------------------------+-------------------- ---+| DIA DA SEMANA('2030-01-19') | DAYNAME('2030-01-19') |+-------------------------+------------ -----------+| 7 | Sábado |+-------------------------+--------------------- --+

Valores de data e hora


Também funciona com valores de data e hora:
SELECT DAYOFWEEK('2030-01-24 10:30:45'); 

Resultado:
+----------------------------------+| DIA DA SEMANA('2030-01-24 10:30:45') |+------------------------------------------------ -+| 5 |+----------------------------------+

Zero Dias


Zero dias resultam em null .

Exemplo:
SELECT DAYOFWEEK('2030-00-00'); 

Resultado:
+-------------------------+| DIA DA SEMANA('2030-00-00') |+-------------------------+| NULO |+-------------------------+

Datas numéricas


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

Exemplo
SELECT DAYOFWEEK(20300125); 

Resultado:
+----------+| DIA DA SEMANA(20300125) |+---------------------+| 6 |+---------------------+

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

Resultado:
+-------------------+| DIA DA SEMANA(300125) |+-------------------+| 6 |+-------------------+

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

Resultado:
+----------+| DIA DA SEMANA(20300135) |+---------------------+| NULL |+---------------------+

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 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25'); 

Resultado (usando saída vertical):
DAYOFWEEK('2030/01/25'):6DAYOFWEEK('2030,01,25'):6DAYOFWEEK('2030:01:25'):6DAYOFWEEK('2030;01!25'):6 

Data atual


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

Resultado:
+---------------------+------------------+| AGORA() | DIA DA SEMANA(AGORA()) |+--------------------------------+------------------+| 2021-05-15 09:17:44 | 7 |+---------------------+------------------+

Argumentos inválidos


Quando passado um argumento inválido, DAYOFWEEK() retorna null :
SELECT DAYOFWEEK('Homer'); 

Resultado:
+--------------------+| DIA DA SEMANA('Homer') |+------+| NULO |+--------------------+

Argumento ausente


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

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

E outro exemplo:
SELECT DAYOFWEEK('2030-01-25', '2045-05-08'); 

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