No MariaDB,
DAYNAME()
é uma função interna de data e hora que retorna o nome do dia da semana para uma determinada data. Ele aceita um argumento, que é a data da qual você deseja extrair o nome do dia.
Sintaxe
A sintaxe fica assim:
DAYNAME(date)
Onde
date
é a data para obter o nome do dia. Exemplo
Aqui está um exemplo:
SELECT DAYNAME('2045-10-17');
Resultado:
+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| Terça-feira |+-----------------------+
Idioma
O idioma usado para o nome do dia é controlado pelo valor do
lc_time_names
variável do sistema. Aqui está um exemplo que mostra como isso afeta o resultado:
SET lc_time_names = 'de_DE';
SELECT DAYNAME('2045-10-17');
Resultado:
+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| Dienstag |+-----------------------+
E voltando para
en_US
, que é o padrão:SET lc_time_names = 'en_US';
SELECT DAYNAME('2045-10-17');
Resultado:
+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| Terça-feira |+-----------------------+
Aqui está uma lista de localidades suportadas pelo MariaDB e veja como retornar sua própria lista de localidades disponíveis.
Enquanto estamos nisso, aqui está uma postagem explicando como verificar o valor de seus
lc_time_names
variável do sistema. Valores de data e hora
Também funciona com valores de data e hora:
SELECT DAYNAME('2030-01-25 10:30:45');
Resultado:
+--------------------------------+| DAYNAME('2030-01-25 10:30:45') |+--------------------------------+ | Sexta-feira |+--------------------------------+
Zero Dias
Ter um dia zero na data retorna
null
:SELECT DAYNAME('2030-00-00');
Resultado:
+-----------------------+| DAYNAME('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 DAYNAME(20201108);
Resultado:
+-------------------+| DAYNAME(20201108) |+-------------------+| Domingo |+-------------------+
Anos de dois dígitos são bons:
SELECT DAYNAME(201108);
Resultado:
+-----------------+| DAYNAME(201108) |+-----------------+| Domingo |+-----------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do mês para um mês inválido:
SELECT DAYNAME(209908);
Resultado:
+-----------------+| DAYNAME(209908) |+-----------------+| 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
DAYNAME('2027/08/19'),
DAYNAME('2027,08,19'),
DAYNAME('2027:08:19'),
DAYNAME('2027;08!19');
Resultado (usando saída vertical):
DAYNAME('2027/08/19'):QuintaDAYNAME('2027,08,19'):QuintaDAYNAME('2027:08:19'):QuintaDAYNAME('2027;08!19'):QuintaData atual
Podemos passarNOW()
como argumento de data para usar a data atual:
SELECT NOW(), DAYNAME(NOW());
Resultado:
+---------------------+----------------+| AGORA() | DAYNAME(AGORA()) |+---------------------+----------------+| 2021-05-13 13:29:10 | Quinta-feira |+---------------------+----------------+Argumentos inválidos
Quando passado um argumento inválido,DAYNAME()
retornanull
:
SELECT DAYNAME('Dang!');
Resultado:
+------------------+| DAYNAME('Droga!') |+------------------+| NULO |+------------------+Argumento ausente
ChamandoDAYNAME()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT DAYNAME();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'DAYNAME'
E outro exemplo:
SELECT DAYNAME('2030-01-25', '2045-05-08');
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'DAYNAME'