No MariaDB,
DAY()
é um sinônimo para DAYOFMONTH()
. Retorna o dia do mês a partir de uma determinada data. Ele aceita um argumento, que é a data da qual você deseja retornar o dia do mês.
O resultado está no intervalo
1
para 31
. No entanto, se a data tiver uma parte de dia zero (por exemplo, '0000-00-00'
ou '2021-00-00'
), o resultado é 0
. Sintaxe
A sintaxe fica assim:
DAY(date)
Onde
date
é a data da qual extrair o dia. Exemplo
Aqui está um exemplo:
SELECT DAY('2045-05-18');
Resultado:
+-------------------+| DIA('2045-05-18') |+-------------------+| 18 |+-------------------+
Valores de data e hora
Também funciona com valores de data e hora:
SELECT DAY('2045-05-18 01:10:15');
Resultado:
+----------------------------+| DAY('2045-05-18 01:10:15') |+-----------------------------+| 18 |+----------------------------+
Zero Dias
Aqui está um exemplo que usa um dia zero na data:
SELECT DAY('0000-00-00');
Resultado:
+-------------------+| DIA('0000-00-00') |+-------------------+| 0 |+-------------------+
Datas numéricas
Também é possível passar datas como um número, desde que faça sentido como uma data.
Exemplo
SELECT DAY(20220308);
Resultado:
+---------------+| DIA(20220308) |+---------------+| 8 |+---------------+
Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT DAY(220308);
Resultado:
+-------------+| DIA(220308) |+-------------+| 8 |+-------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT DAY(220358);
Resultado:
+-------------+| DIA(220358) |+-------------+| 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
DAY('2028/12/30'),
DAY('2028,12,30'),
DAY('2028:12:30'),
DAY('2028;12!30');
Resultado (usando saída vertical):
DAY('2028/12/30'):30DAY('2028,12,30'):30DAY('2028:12:30'):30DAY('2028;12!30'):30Data atual
Podemos passarNOW()
como argumento de data para usar a data atual:
SELECT NOW(), DAY(NOW());
Resultado:
+----------+------------+| AGORA() | DIA(AGORA()) |+---------------------+------------+| 2021-05-13 09:41:03 | 13 |+----------+------------+Argumentos inválidos
Quando passado um argumento inválido,DAY()
retornanull
:
SELECT DAY('Oops!');
Resultado:
+--------------+| DAY('Ops!') |+--------------+| NULL |+--------------+Argumento ausente
ChamandoDAY()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT DAY();
Resultado:
ERRO 1064 (42000):Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MariaDB para a sintaxe correta para usar perto de ')' na linha 1
E outro exemplo:
SELECT DAY('2030-01-25', '2045-05-08');
Resultado:
ERRO 1064 (42000):Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MariaDB para a sintaxe correta a ser usada perto de ' '2045-05-08')' na linha 1