En MariaDB, DAYOFYEAR()
es una función de fecha y hora integrada que devuelve el día del año a partir de una fecha determinada.
Acepta un argumento, que es la fecha de la que desea extraer el día del año.
Devuelve el día como un número en el rango 1
a 366
.
Sintaxis
La sintaxis es así:
DAYOFYEAR(date)
Donde date
es la fecha a partir de la cual se obtiene el día del año.
Ejemplo
He aquí un ejemplo:
SELECT DAYOFYEAR('2030-12-25');
Resultado:
+-------------------------+ | DAYOFYEAR('2030-12-25') | +-------------------------+ | 359 | +-------------------------+
Valores de fecha y hora
También funciona con valores de fecha y hora:
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Resultado:
+----------------------------------+ | DAYOFYEAR('2030-02-01 10:30:45') | +----------------------------------+ | 32 | +----------------------------------+
Cero Días
Los días cero dan como resultado null
.
Ejemplo:
SELECT DAYOFYEAR('2030-00-00');
Resultado:
+-------------------------+ | DAYOFYEAR('2030-00-00') | +-------------------------+ | NULL | +-------------------------+
Fechas numéricas
También es posible pasar fechas como un número, siempre que tenga sentido como fecha.
Ejemplo
SELECT DAYOFYEAR(20301125);
Resultado:
+---------------------+ | DAYOFYEAR(20301125) | +---------------------+ | 329 | +---------------------+
O incluso lo siguiente (que usa un año de dos dígitos):
SELECT DAYOFYEAR(301125);
Resultado:
+-------------------+ | DAYOFYEAR(301125) | +-------------------+ | 329 | +-------------------+
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 DAYOFYEAR(20300135);
Resultado:
+---------------------+ | DAYOFYEAR(20300135) | +---------------------+ | 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
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Resultado (usando salida vertical):
DAYOFYEAR('2030/06/25'): 176 DAYOFYEAR('2030,06,25'): 176 DAYOFYEAR('2030:06:25'): 176 DAYOFYEAR('2030;06!25'): 176
Fecha actual
Podemos pasar NOW()
como argumento de fecha para usar la fecha actual:
SELECT
NOW(),
DAYOFYEAR(NOW());
Resultado:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2021-05-16 09:05:57 | 136 | +---------------------+------------------+
Argumentos no válidos
Cuando se pasa un argumento no válido, DAYOFYEAR()
devuelve null
:
SELECT DAYOFYEAR('Friday');
Resultado:
+---------------------+ | DAYOFYEAR('Friday') | +---------------------+ | NULL | +---------------------+
Argumento faltante
Llamando a DAYOFYEAR()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT DAYOFYEAR();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'
Y otro ejemplo:
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'