Una consulta de MySQL para filtrar datos por día de la semana

Estoy acostumbrado a hacer consultas que extraen datos entre un rango de fechas, es lo de costumbre.

Pero se me ofreció hacer una consulta que filtrara los datos por el día de la semana. Sabía que de seguro hay una forma, solo que no la conocía. Afortunadamente no es muy complicado el asunto.

Día de la semana.

Existe una función dentro del mismo MySQL que nos ayuda a averiguar el día de la semana de una fecha.

A la función DAYOFWEEK se le entrega una fecha y regresa el valor de 1 si es domingo, 2 si es lunes y así hasta llegar a el sábado con el número 7.

Dicho esto, sólo hay que agregar una condición a la cláusula WHERE.

Hice una tabla de ejemplo, que básicamente reúne todas las fechas del mes de Octubre junto con una cantidad.

fechas

fechacantidad
2021-10-01101
2021-10-02102
2021-10-03103
2021-10-04104
2021-10-05105
2021-10-06106
2021-10-07107
2021-10-08108
2021-10-09109
2021-10-10110
2021-10-11111
2021-10-12112
2021-10-13113
2021-10-14114
2021-10-15115
2021-10-16116
2021-10-17117
2021-10-18118
2021-10-19119
2021-10-20120
2021-10-21121
2021-10-22122
2021-10-23123
2021-10-24124
2021-10-25125
2021-10-26126
2021-10-27127
2021-10-28128
2021-10-29129
2021-10-30130
2021-10-31131

Pero ¿Cuales de estos días ocurrieron el día domingo? pues muy fácil

SELECT * FROM fechas
WHERE DAYOFWEEK(fecha)=1
ORDER BY fecha ASC;
fechacantidad
2021-10-03103
2021-10-10110
2021-10-17117
2021-10-24124
2021-10-31131
¡Dominguito alegre!

O los sábados y domingos.

SELECT * FROM fechas
WHERE DAYOFWEEK(fecha)=1 OR
      DAYOFWEEK(fecha)=7
ORDER BY fecha ASC;
El editor de consultas de HeidiSQL.

La verdad no se cuando voy a volver a utilizar este código, pero lo dejo aquí por si se le ofrece al mí mismo del futuro.

¡Hasta la próxima!

2 comentarios en «Una consulta de MySQL para filtrar datos por día de la semana»

  1. Hola, interesante tu consulta SQL.

    una mejora a tu consulta podría ser:

    SELECT * FROM fechas
    WHERE DAYOFWEEK(fecha) IN (1,7)
    ORDER BY fecha ASC;

    Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.