En MariaDB, DAY()
es un sinónimo de DAYOFMONTH()
. Devuelve el día del mes a partir de una fecha dada.
Acepta un argumento, que es la fecha en la que desea devolver el día del mes.
El resultado está en el rango 1
al 31
. Sin embargo, si la fecha tiene una parte de día cero (por ejemplo, '0000-00-00'
o '2021-00-00'
), el resultado es 0
.
Sintaxis
La sintaxis es así:
DAY(date)
Donde date
es la fecha de donde extraer el día.
Ejemplo
He aquí un ejemplo:
SELECT DAY('2045-05-18');
Resultado:
+-------------------+ | DAY('2045-05-18') | +-------------------+ | 18 | +-------------------+
Valores de fecha y hora
También funciona con valores de fecha y hora:
SELECT DAY('2045-05-18 01:10:15');
Resultado:
+----------------------------+ | DAY('2045-05-18 01:10:15') | +----------------------------+ | 18 | +----------------------------+
Cero Días
Aquí hay un ejemplo que usa un día cero en la fecha:
SELECT DAY('0000-00-00');
Resultado:
+-------------------+ | DAY('0000-00-00') | +-------------------+ | 0 | +-------------------+
Fechas numéricas
También es posible pasar fechas como un número, siempre que tenga sentido como fecha.
Ejemplo
SELECT DAY(20220308);
Resultado:
+---------------+ | DAY(20220308) | +---------------+ | 8 | +---------------+
O incluso lo siguiente (que usa un año de dos dígitos):
SELECT DAY(220308);
Resultado:
+-------------+ | DAY(220308) | +-------------+ | 8 | +-------------+
Pero debe tener sentido como fecha. Esto es lo que sucede si aumento la parte del día a un día no válido:
SELECT DAY(220358);
Resultado:
+-------------+ | DAY(220358) | +-------------+ | NULL | +-------------+
Otros delimitadores
Puede utilizar otros delimitadores para la fecha. MariaDB es bastante indulgente cuando se trata de delimitadores en fechas. Aquí hay algunos ejemplos válidos:
SELECT
DAY('2028/12/30'),
DAY('2028,12,30'),
DAY('2028:12:30'),
DAY('2028;12!30');
Resultado (usando salida vertical):
DAY('2028/12/30'): 30 DAY('2028,12,30'): 30 DAY('2028:12:30'): 30 DAY('2028;12!30'): 30
Fecha actual
Podemos pasar NOW()
como argumento de fecha para usar la fecha actual:
SELECT
NOW(),
DAY(NOW());
Resultado:
+---------------------+------------+ | NOW() | DAY(NOW()) | +---------------------+------------+ | 2021-05-13 09:41:03 | 13 | +---------------------+------------+
Argumentos no válidos
Cuando se pasa un argumento no válido, DAY()
devuelve null
:
SELECT DAY('Oops!');
Resultado:
+--------------+ | DAY('Oops!') | +--------------+ | NULL | +--------------+
Argumento faltante
Llamando a DAY()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT DAY();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Y otro ejemplo:
SELECT DAY('2030-01-25', '2045-05-08');
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2045-05-08')' at line 1