MySQL - Cambiar el primer dia de la semana mysql

   
Vista:

Cambiar el primer dia de la semana mysql

Publicado por Ramiro Romero r.romero@ayr.hn (3 intervenciones) el 06/11/2017 17:36:50
Buen día

Necesito saber como cambiar el primer dia de la semana en mysql. necesito que la semana comience el sabado y termine el viernes.

Gracias por su ayuda.

Atte,
Ramiro ROMERO.
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

Cambiar el primer dia de la semana mysql

Publicado por leonardo_josue (307 intervenciones) el 06/11/2017 20:39:55
Hola Ramiro:

No me queda claro a qué te refieres con cambiar el día de la semana... puedo suponer que se trata de la función DAYOFWEEK, el cuál te dice en un rango del 1 al 7 qué día de la semana donde 1 = domingo y 7 = sábado...

Si esto no es lo que quieres, entonces debería de tomarte un poco más de tiempo para explicarnos qué necesitas, poniendo algunos datos de ejemplo.

y si estoy en lo correcto y esto es lo que necesitas, entonces basta con que implementes un CASE WHEN para cambiar el orden de los días como se te pegue en gana:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
mysql> SELECT * FROM dias;
+------------+
| dia        |
+------------+
| 2016-11-01 |
| 2016-11-02 |
| 2016-11-03 |
| 2016-11-04 |
| 2016-11-05 |
| 2016-11-06 |
| 2016-11-07 |
| 2016-11-08 |
| 2016-11-09 |
| 2016-11-10 |
+------------+
10 rows in set (0.00 sec)
 
mysql> SELECT
    ->   dia,
    ->   DAYOFWEEK(dia) normal,
    ->   CASE DAYOFWEEK(dia)
    ->     WHEN 1 THEN 2
    ->     WHEN 2 THEN 3
    ->     WHEN 3 THEN 4
    ->     WHEN 4 THEN 5
    ->     WHEN 5 THEN 6
    ->     WHEN 6 THEN 7
    ->     WHEN 7 THEN 1
    ->   END modificado
    -> FROM dias;
+------------+--------+------------+
| dia        | normal | modificado |
+------------+--------+------------+
| 2016-11-01 |      3 |          4 |
| 2016-11-02 |      4 |          5 |
| 2016-11-03 |      5 |          6 |
| 2016-11-04 |      6 |          7 |
| 2016-11-05 |      7 |          1 |
| 2016-11-06 |      1 |          2 |
| 2016-11-07 |      2 |          3 |
| 2016-11-08 |      3 |          4 |
| 2016-11-09 |      4 |          5 |
| 2016-11-10 |      5 |          6 |
+------------+--------+------------+
10 rows in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar el primer dia de la semana mysql

Publicado por Ramiro Romero r.romero@ayr.hn (3 intervenciones) el 06/11/2017 21:06:17
Muchas gracias por tu respuesta.
Ok, te explico mejor:
el año tiene 52-53 semanas;

la semana normalmente comienza de domingo a sabado o de lunes a domingo.
por ejemplo, a la fecha 06/11/2017 estamos en la semana 45. que comenzó domingo 05 al sabado 11.

Lo que necesito es: que mi semana 45 comience el sabado 04 y termine el viernes 10 para las consultas por semana.
en vfp Week(ctod('06/11/2017'),0,7) = 45 el tercer parámetro le especifico cual es el (que sería sabado) primer día de la semana para hacer el cálculo de en qué semana estoy según la fecha del primer parámetro.
pero al consultar el MySQL con el número de semana "45"
la consulta a MySQL seria:
select * from trable where week(fecha) = 45
me los devuelve del 05/11/2017 al 11/11/2017 en la consulta.
y debería traer los datos que están en el rango 04/11 al 10/11.
espero haberme explicado mejor
y gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar el primer dia de la semana mysql

Publicado por leonardo_josue (307 intervenciones) el 06/11/2017 21:31:01
Hola de nuevo Ramiro:

Veamos si esto te sirve. Según lo que veo, podrías simplemente incrementar un día al cálculo, para hacer coincidir el sábado como si fuera domingo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
mysql> SELECT
    ->   dia,
    ->   WEEK(ADDDATE(dia, INTERVAL 1 DAY)) week_siguiente_dia
    -> FROM dias;
+------------+--------------------+
| dia        | week_siguiente_dia |
+------------+--------------------+
| 2017-11-01 |                 44 |
| 2017-11-02 |                 44 |
| 2017-11-03 |                 44 |
| 2017-11-04 |                 45 |
| 2017-11-05 |                 45 |
| 2017-11-06 |                 45 |
| 2017-11-07 |                 45 |
| 2017-11-08 |                 45 |
| 2017-11-09 |                 45 |
| 2017-11-10 |                 45 |
| 2017-11-11 |                 46 |
| 2017-11-12 |                 46 |
+------------+--------------------+
12 rows in set (0.00 sec)
 
mysql> SELECT
    ->   dia,
    ->   WEEK(ADDDATE(dia, INTERVAL 1 DAY)) week_siguiente_dia
    -> FROM dias
    -> WHERE
    ->   WEEK(ADDDATE(dia, INTERVAL 1 DAY)) = 45;
+------------+--------------------+
| dia        | week_siguiente_dia |
+------------+--------------------+
| 2017-11-04 |                 45 |
| 2017-11-05 |                 45 |
| 2017-11-06 |                 45 |
| 2017-11-07 |                 45 |
| 2017-11-08 |                 45 |
| 2017-11-09 |                 45 |
| 2017-11-10 |                 45 |
+------------+--------------------+
7 rows in set (0.00 sec)

además, la función week tiene un "modificador", el cual hace que se comporte distinto de acuerdo al valor que se mande, checa si alguno de estos modos también te puede servir.

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar el primer dia de la semana mysql

Publicado por Ramiro Romero r.romero@ayr.hn (3 intervenciones) el 06/11/2017 21:56:25
me sirvio esto: WEEK(ADDDATE(dia, INTERVAL 1 DAY)) = 45

Muchas Gracias por su ayuda.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar