No MariaDB,
DAYOFMONTH()
é uma função interna de data e hora que retorna o dia do mês a partir de uma determinada data. Ele aceita um argumento, que é a data da qual você deseja extrair 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:
DAYOFMONTH(date)
Onde
date
é a data da qual extrair o dia. Exemplo
Aqui está um exemplo:
SELECT DAYOFMONTH('2030-01-25');
Resultado:
+--------------------------+| DAYOFMONTH('2030-01-25') |+--------------------------+| 25 |+--------------------------+
Valores de data e hora
Também funciona com valores de data e hora:
SELECT DAYOFMONTH('2030-01-25 10:30:45');
Resultado:
+-----------------------------------+| DAYOFMONTH('2030-01-25 10:30:45') |+--------------------------------- --+| 25 |+-----------------------------------+
Zero Dias
Aqui está um exemplo que usa um dia zero na data:
SELECT DAYOFMONTH('2030-00-00');
Resultado:
+--------------------------+| DAYOFMONTH('2030-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 DAYOFMONTH(20300125);
Resultado:
+----------------------+| DIADEMÊS(20300125) |+----------------------+| 25 |+----------------------+
Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT DAYOFMONTH(300125);
Resultado:
+--------------------+| DIADEMÊS(300125) |+--------------------+| 25 |+--------------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT DAYOFMONTH(20300135);
Resultado:
+----------------------+| DIADEMÊS(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
DAYOFMONTH('2030/01/25'),
DAYOFMONTH('2030,01,25'),
DAYOFMONTH('2030:01:25'),
DAYOFMONTH('2030;01!25');
Resultado (usando saída vertical):
DAYOFMONTH('2030/01/25'):25DAYOFMONTH('2030,01,25'):25DAYOFMONTH('2030:01:25'):25DAYOFMONTH('2030;01!25'):25Data atual
Podemos passarNOW()
como argumento de data para usar a data atual:
SELECT NOW(), DAYOFMONTH(NOW());
Resultado:
+---------------------+-------------------+| AGORA() | DIADEMÊS(AGORA()) |+---------------------+-------------------+ | 2021-05-13 09:02:41 | 13 |+---------------------+-------------------+Argumentos inválidos
Quando passado um argumento inválido,DAYOFMONTH()
retornanull
:
SELECT DAYOFMONTH('Homer');
Resultado:
+----------+| DAYOFMONTH('Homer') |+--------------------------------+| NULL |+---------------------+Argumento ausente
ChamandoDAYOFMONTH()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT DAYOFMONTH();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'DAYOFMONTH'
E outro exemplo:
SELECT DAYOFMONTH('2030-01-25', '2045-05-08');
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'DAYOFMONTH'