Puedes usar el DAYOFWEEK()
función en MySQL para devolver el día de la semana a partir de una fecha.
En este contexto, un valor de retorno de 1 corresponde al domingo, 2 corresponde al lunes, etc.
Este artículo contiene ejemplos para demostrar.
Sintaxis
La sintaxis es así:
DAYOFWEEK(date)
Donde date
es el valor de fecha del que desea que se devuelva el día de la semana.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Podemos ejecutar esto junto con DAYNAME()
función para ver a qué día corresponde:
SET @date = '2019-01-01'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week';
Resultado:
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DÍA DE LA SEMANA() frente a DÍA DEL MES()
Aquí hay un ejemplo para demostrar la diferencia entre DAYOFWEEK()
y DAYOFMONTH()
funciones.
SET @date = '2019-01-20'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week', DAYOFMONTH(@date) AS 'Day of Month';
Resultado:
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
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 DAYOFWEEK()
Por otro lado, la función devuelve un valor entre 1 y 7 . Se restablece a 1 al comienzo de cada semana.
Un ejemplo de base de datos
Aquí, hacemos algo similar a los ejemplos anteriores, excepto que este ejemplo usa datos de una base de datos:
USE sakila; SELECT payment_date AS 'Date/Time', DAYNAME(payment_date) AS 'Day Name', DAYOFWEEK(payment_date) AS 'Day of Week' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
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(), DAYOFWEEK(NOW());
Resultado:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Otra forma de hacer esto es usar CURDATE()
función, que devuelve solo la fecha (pero no la hora).
SELECT CURDATE(), DAYOFWEEK(CURDATE());
Resultado:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+