MySQL - obtener los sabados con su fecha dentro de un rango de fechas

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

obtener los sabados con su fecha dentro de un rango de fechas

Publicado por Roger (5 intervenciones) el 22/10/2018 22:27:58
Que tal, me pueden ayudar con lo siguiente? necesito obtener Todos los sábados que estén contenidos en un rango de fechas:
fecha inicial: 2018-01-13 00:00:00
fecha final: 2018-04-28 00:00:00

como resultado muestre los sabados de enero(2018-01-13 00:00:00 ) hasta abril(2018-04-28 00:00:00 );
2018-01-06
2018-01-13
2018-01-20
2018-01-27
así hasta llegar a abril
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

obtener los sabados con su fecha dentro de un rango de fechas

Publicado por kip (30 intervenciones) el 25/10/2018 15:56:05
Hola, la función [ur=https://www.w3resource.com/mysql/date-and-time-functions/mysql-dayofweek-function.php]DAYOFWEEK[/url] deberia servirte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MySQL [test]> SELECT * FROM fechas;
+----+---------------------+
| id | fecha               |
+----+---------------------+
|  1 | 2018-10-01 00:00:00 |
|  2 | 2018-10-02 00:00:00 |
|  3 | 2018-10-06 00:00:00 |
|  4 | 2018-10-07 00:00:00 |
|  5 | 2018-10-10 00:00:00 |
|  6 | 2018-10-13 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)
MySQL [test]> SELECT * FROM fechas WHERE DAYOFWEEK(fecha) = 7;
+----+---------------------+
| id | fecha               |
+----+---------------------+
|  3 | 2018-10-06 00:00:00 |
|  6 | 2018-10-13 00:00:00 |
+----+---------------------+
2 rows in set (0.01 sec)
 
MySQL [test]>

Para obtener el rango de meses, bien puedes aplciar un BETWEEN y colocar las dos fechas de referencia o usar MONTH, algo asi:

1
2
3
4
5
6
7
8
MySQL [test]> SELECT * FROM fechas WHERE (MONTH(fecha) BETWEEN 9 and 10)  AND DAYOFWEEK(fecha) = 7;
+----+---------------------+
| id | fecha               |
+----+---------------------+
|  3 | 2018-10-06 00:00:00 |
|  6 | 2018-10-13 00:00:00 |
+----+---------------------+
2 rows in set (0.02 sec)

El problema quizas sea de performance, ya que si tienes una cantidad considerable de registros esto sera lento, procura usar los indices para filtrar exactamente las filas que necesites aplicar este otro filtro de fechas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar