No MariaDB,
MONTHNAME()
é uma função interna de data e hora que retorna o nome do mês para uma determinada data. Ele aceita um argumento, que é a data da qual você deseja extrair o nome do mês.
Sintaxe
A sintaxe fica assim:
MONTHNAME(date)
Onde
date
é a data para obter o nome do mês. Exemplo
Aqui está um exemplo:
SELECT MONTHNAME('2041-11-14');
Resultado:
+-------------------------+| NOME DO MÊS('2041-11-14') |+-------------------------+| Novembro |+-------------------------+
Idioma
O idioma usado para o nome do mês é controlado pelo valor de
lc_time_names
variável do sistema. Aqui está um exemplo que mostra como isso afeta o resultado:
SET lc_time_names = 'es_AR';
SELECT MONTHNAME('2041-11-14');
Resultado:
+-------------------------+| NOME DO MÊS('2041-11-14') |+-------------------------+| novembro |+-------------------------+
E voltando para
en_US
, que é o padrão:SET lc_time_names = 'en_US';
SELECT MONTHNAME('2041-11-14');
Resultado:
+-------------------------+| NOME DO MÊS('2041-11-14') |+-------------------------+| Novembro |+-------------------------+
Aqui está uma lista de localidades suportadas pelo MariaDB e veja como retornar sua própria lista de localidades disponíveis.
E aqui está um post 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 MONTHNAME('2041-01-15 10:30:45');
Resultado:
+----------------------------------+| NOME DO MÊS('2041-01-15 10:30:45') |+--------------------------------- -+| Janeiro |+----------------------------------+
Zero Meses
Ter um mês zero na data retorna
null
:SELECT MONTHNAME('2030-00-00');
Resultado:
+-------------------------+| NOME DO MÊS('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 MONTHNAME(20201208);
Resultado:
+----------+| NOME DO MÊS(20201208) |+---------------------+| Dezembro |+---------------------+
Anos de dois dígitos são bons:
SELECT MONTHNAME(201208);
Resultado:
+-------------------+| NOME DO MÊS(201208) |+-------------------+| Dezembro |+-------------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT MONTHNAME(201299);
Resultado:
+-------------------+| NOME DO MÊS(201299) |+-------------------+| 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
MONTHNAME('2027/08/19'),
MONTHNAME('2027,08,19'),
MONTHNAME('2027:08:19'),
MONTHNAME('2027;08!19');
Resultado (usando saída vertical):
MONTHNAME('2027/08/19'):AugustMONTHNAME('2027,08,19'):AugustMONTHNAME('2027:08:19'):AugustMONTHNAME('2027;08!19'):AgostoData atual
Podemos passarNOW()
como argumento de data para usar a data atual:
SELECT NOW(), MONTHNAME(NOW());
Resultado:
+---------------------+------------------+| AGORA() | NOME DO MÊS(AGORA()) |+---------------------+------------------+| 2021-05-14 10:11:16 | Maio |+---------------------+------------------+Argumentos inválidos
Quando passado um argumento inválido,MONTHNAME()
retornanull
:
SELECT MONTHNAME('Wrong!');
Resultado:
+----------+| NOME DO MÊS('Errado!') |+---------------------+| NULL |+---------------------+Argumento ausente
ChamandoMONTHNAME()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT MONTHNAME();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'MONTHNAME'
E outro exemplo:
SELECT MONTHNAME('2030-01-25', '2045-05-08');
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'MONTHNAME'