Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/02/2019, 13:44
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda con funciones Week y Month

Hola Middrel:

el problema con tu consulta es que en ningún momento estás consultando o filtrando la información de tu TABLA, sino que haces comparaciones con valores fijos. Va un ejemplo, suponiendo la siguiente tabla:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+------------+
  3. | id   | fecha      |
  4. +------+------------+
  5. |    1 | 2019-01-01 |
  6. |    2 | 2019-01-03 |
  7. |    3 | 2019-01-04 |
  8. |    4 | 2019-01-07 |
  9. |    5 | 2019-01-09 |
  10. |    6 | 2019-01-10 |
  11. |    7 | 2019-01-15 |
  12. |    8 | 2019-01-20 |
  13. |    9 | 2019-01-22 |
  14. |   10 | 2019-01-23 |
  15. |   11 | 2019-01-24 |
  16. |   12 | 2019-01-30 |
  17. |   13 | 2019-02-06 |
  18. |   14 | 2019-02-11 |
  19. |   15 | 2019-02-14 |
  20. +------+------------+
  21. 12 rows in set (0.00 sec)


entonces, para saber la semana a la que corresponde cada fecha debes de utilizar el campo FECHA de tu tabla, es decir, algo asi:

Código MySQL:
Ver original
  1. YEARWEEK(fecha, 1)

Sin embargo tu en el WHERE estás mandando ya una fecha fija,

Código MySQL:
Ver original
  1. YEARWEEK('2019-02-11',1)

Observa la diferencia haciendo ambas formas a la vez:

Código MySQL:
Ver original
  1. mysql> SELECT fecha, YEARWEEK(fecha, 1) semana, YEARWEEK('2019-01-25') semana_fija  FROM tabla;
  2. mysql> SELECT fecha, YEARWEEK(fecha, 1) semana, YEARWEEK('2019-01-25') semana_fija  FROM tabla;
  3. +------------+--------+-------------+
  4. | fecha      | semana | semana_fija |
  5. +------------+--------+-------------+
  6. | 2019-01-01 | 201901 |      201903 |
  7. | 2019-01-03 | 201901 |      201903 |
  8. | 2019-01-04 | 201901 |      201903 |
  9. | 2019-01-07 | 201902 |      201903 |
  10. | 2019-01-09 | 201902 |      201903 |
  11. | 2019-01-10 | 201902 |      201903 |
  12. | 2019-01-15 | 201903 |      201903 |
  13. | 2019-01-20 | 201903 |      201903 |
  14. | 2019-01-22 | 201904 |      201903 |
  15. | 2019-01-23 | 201904 |      201903 |
  16. | 2019-01-24 | 201904 |      201903 |
  17. | 2019-01-30 | 201905 |      201903 |
  18. | 2019-02-06 | 201906 |      201903 |
  19. | 2019-02-11 | 201907 |      201903 |
  20. | 2019-02-14 | 201907 |      201903 |
  21. +------------+--------+-------------+
  22. 15 rows in set (0.00 sec)

en otra palabras la ultima columna NO REALIZA UN CÁLCULO SOBRE LA FECHA DE LA TABLA, sino sobre la fecha que estás mandando como parámetro.

entonces para filtrar sólo los registros de la semana ACTUAL, tendrías que hacer algo así:

Código MySQL:
Ver original
  1. mysql> SELECT fecha, YEARWEEK(fecha, 1) semana, YEARWEEK('2019-01-25') semana_fija
  2.     -> FROM tabla
  3.     -> WHERE YEARWEEK(fecha, 1) = YEARWEEK(curdate(), 1);
  4. +------------+--------+-------------+
  5. | fecha      | semana | semana_fija |
  6. +------------+--------+-------------+
  7. | 2019-02-11 | 201907 |      201903 |
  8. | 2019-02-14 | 201907 |      201903 |
  9. +------------+--------+-------------+
  10. 2 rows in set (0.04 sec)

¿Se entiende?

Haz la prueba y nos comentas.

Saludos
Leo.