No MariaDB,
WEEKDAY()
é 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 começa em zero para segunda-feira (ou seja,
0
=segunda-feira, 1
=terça-feira, etc). Isso contrasta com DAYOFWEEK()
, que segue o padrão ODBC (1
=domingo, 2
=segunda-feira, etc). Sintaxe
A sintaxe fica assim:
WEEKDAY(date)
Onde
date
é a data para obter o dia da semana. Exemplo
Aqui está um exemplo:
SELECT WEEKDAY('2030-01-25');
Resultado:
+-----------------------+| WEEKDAY('2030-01-25') |+-----------------------+| 4 |+-----------------------+
Comparado com o nome do dia
Aqui está outro, junto com
DAYNAME()
para retornar o nome do dia:SELECT
WEEKDAY('2030-01-21'),
DAYNAME('2030-01-21');
Resultado:
+-----------------------+---------------------- -+| DIA DA SEMANA('2030-01-21') | DAYNAME('2030-01-21') |+-----------------------+-------------- ---------+| 0 | Segunda-feira |+-----------------------+----------------------- +
Conforme mencionado, a numeração do índice começa em 0 para segunda-feira.
Aqui é domingo:
SELECT
WEEKDAY('2030-01-20'),
DAYNAME('2030-01-20');
Resultado:
+-----------------------+---------------------- -+| DIA DA SEMANA('2030-01-20') | DAYNAME('2030-01-20') |+-----------------------+-------------- ---------+| 6 | Domingo |+-----------------------+----------------------- +
Valores de data e hora
Também funciona com valores de data e hora:
SELECT WEEKDAY('2030-01-24 10:30:45');
Resultado:
+--------------------------------+| SEMANA('2030-01-24 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+
Zero Dias
Zero dias resultam em
null
. Exemplo:
SELECT WEEKDAY('2030-00-00');
Resultado:
+-----------------------+| DIA DA SEMANA('2030-00-00') |+-----------------------+| NULL |+-----------------------+
Datas numéricas
Também é possível passar datas como um número, desde que faça sentido como uma data.
Exemplo
SELECT WEEKDAY(20300125);
Resultado:
+-------------------+| DIA DA SEMANA(20300125) |+-------------------+| 4 |+-------------------+
Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT WEEKDAY(300125);
Resultado:
+-----------------+| DIA DA SEMANA(300125) |+-----------------+| 4 |+-----------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT WEEKDAY(20300135);
Resultado:
+-------------------+| DIA DA SEMANA(20300135) |+-------------------+| NULO |+-------------------+
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
WEEKDAY('2030/01/25'),
WEEKDAY('2030,01,25'),
WEEKDAY('2030:01:25'),
WEEKDAY('2030;01!25');
Resultado (usando saída vertical):
WEEKDAY('2030/01/25'):4WEEKDAY('2030,01,25'):4WEEKDAY('2030:01:25'):4WEEKDAY('2030;01!25'):4Data atual
Podemos passarNOW()
como argumento de data para usar a data atual:
SELECT NOW(), WEEKDAY(NOW());
Resultado:
+---------------------+----------------+| AGORA() | DIA DA SEMANA(AGORA()) |+---------------------+----------------+| 2021-05-15 09:44:50 | 5 |+---------------------+----------------+Argumentos inválidos
Quando passado um argumento inválido,WEEKDAY()
retornanull
:
SELECT WEEKDAY('Homer');
Resultado:
+------------------+| WEEKDAY('Homer') |+------------------+| NULO |+------------------+Argumento ausente
ChamandoWEEKDAY()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT WEEKDAY();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'WEEKDAY'
E outro exemplo:
SELECT WEEKDAY('2030-01-25', '2045-05-08');
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'WEEKDAY'