Al ejecutar consultas en MySQL, puede usar el DAYOFYEAR() función para devolver el día del año a partir de una fecha.
Esta función acepta un argumento y devuelve un valor entre 1 y 366 , según el día del año que represente la parte del día del argumento.
Sintaxis
La sintaxis es así:
DAYOFYEAR(date)
Donde date es el valor de fecha del que desea que se devuelva el día del año.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT
DAYOFYEAR('2019-01-01') AS 'Date 1',
DAYOFYEAR('2019-12-31') AS 'Date 2';
Resultado:
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
En este ejemplo, para demostrar el efecto adecuado, ejecuto esta función dos veces en dos fechas diferentes:una al comienzo del año y la otra al final del año.
DÍA DEL AÑO() frente a DÍA DEL MES()
Aquí hay un ejemplo para demostrar la diferencia entre DAYOFYEAR() y DAYOFMONTH() funciones.
SET @date = '2019-10-03';
SELECT
@date,
DAYOFMONTH(@date) AS 'Day of Month',
DAYOFYEAR(@date) AS 'Day of Year';
Resultado:
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
El DAYOFMONTH() la función devuelve un valor entre 1 y 31 (o 0 para fechas con una parte de día cero) que representa el día del mes. Se restablece a 1 al comienzo de cada mes.
El DAYOFYEAR() Por otro lado, la función devuelve un valor entre 1 y 366 . Se restablece a 1 al comienzo de cada año.
Un ejemplo de base de datos
Aquí hay un ejemplo del uso de DAYOFYEAR() al consultar una base de datos:
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
Fecha/hora actual
Aquí hay un ejemplo de cómo extraer la parte del día de la fecha y hora actuales (que se devuelve usando NOW() función).
SELECT
NOW(),
DAYOFYEAR(NOW());
Resultado:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
Otra forma de hacer esto es usar CURDATE() función, que devuelve solo la fecha (pero no la hora).
SELECT
CURDATE(),
DAYOFYEAR(CURDATE());
Resultado:
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+