Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Que el primer dia de la semana sea Lunes y no Domingo???

Estas en el tema de Que el primer dia de la semana sea Lunes y no Domingo??? en el foro de Mysql en Foros del Web. Una vez más solicitando su ayuda. Eso, como hago para que la semana comience el día Lunes y no el domingo en una consulta a ...
  #1 (permalink)  
Antiguo 06/06/2008, 21:23
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Que el primer dia de la semana sea Lunes y no Domingo???

Una vez más solicitando su ayuda.

Eso, como hago para que la semana comience el día Lunes y no el domingo en una consulta a BD Mysql??? Por defecto el día " 0 " en MySql es el domingo, por lo que al agrupara por semanas, lo agrupa de domingo a sábado. Necesito agrupar y ordenar de lunes a domingo

Desde Ya Gracias.
  #2 (permalink)  
Antiguo 07/06/2008, 01:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

No deberás tener problemas con weekday(), pues con esta función el valor para lunes es = 0 y domingo = 6. Seguramente estás usando dayofweek(), función que sí usa el domingo como primer día. Usa, pues, para agrupar y ordenar la función weekday().
En el caso de la función weekofyear(), la que sirve para sacar el número de semana en el año, tienes el parámetro mode que te permitirá cambiar el comienzo a lunes.
mira este enlace http://dev.mysql.com/doc/refman/5.0/...#function_week


Por si te sirve.

Última edición por jurena; 07/06/2008 a las 09:21
  #3 (permalink)  
Antiguo 07/06/2008, 09:41
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

Mira la forma en que lo estoy ocupando es la siguiente

Código:
 SELECT Year(log_0.fecha_date) as `año`, 
CASE 
WHEN MONTH(log_0.fecha_date) = 1 THEN "enero"
WHEN MONTH(log_0.fecha_date) = 2 THEN "febrero"
WHEN MONTH(log_0.fecha_date) = 3 THEN "marzo"
WHEN MONTH(log_0.fecha_date) = 4 THEN "abril"
WHEN MONTH(log_0.fecha_date) = 5 THEN "mayo"
WHEN MONTH(log_0.fecha_date) = 6 THEN "junio"
WHEN MONTH(log_0.fecha_date) = 7 THEN "julio"
WHEN MONTH(log_0.fecha_date) = 8 THEN "agosto"
WHEN MONTH(log_0.fecha_date) = 9 THEN "septiembre"
WHEN MONTH(log_0.fecha_date) = 10 THEN "octubre"
WHEN MONTH(log_0.fecha_date) = 11 THEN "noviembre"
WHEN MONTH(log_0.fecha_date) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
CASE 
WHEN DAYname(log_0.fecha_date) = 0 THEN "Lunes"
WHEN DAYname(log_0.fecha_date) = 1 THEN "Martes"
WHEN DAYname(log_0.fecha_date) = 2 THEN "Miercoles"
WHEN DAYname(log_0.fecha_date) = 3 THEN "Jueves"
WHEN DAYname(log_0.fecha_date) = 4 THEN "Viernes"
WHEN DAYname(log_0.fecha_date) = 5 THEN "Sabado"
WHEN DAYname(log_0.fecha_date) = 6 THEN "Domingo"
ELSE "NUUL_DIA" END AS DIA,
  SUM(IF(t_mensaje='',1,0)) AS NO_ESC_MSJE,
  SUM(IF(t_mensaje='NORMAL',1,0)) AS MSJE_NORMAL,
  SUM(IF(t_mensaje='CODIGO',1,0)) AS MSJE_CODIGO_AREA, 
  SUM(IF(t_mensaje='GENERAL',1,0)) AS MSJE_GENERAL,
  SUM(IF(t_mensaje='GENERAL PRE',1,0)) AS MSJE_GENERAL_PRE_GRAB,
  SUM(IF(t_mensaje='HOTLINE',1,0)) AS MENU_HOTLINE,
  SUM(IF(t_mensaje='HOTLINE-ANEXO',1,0)) AS HOTLINE_ANEXO,
  sum(IF(trf_agente='',t_mensaje='CODIGO' OR t_mensaje='GENERAL' OR t_mensaje='GENERAL PRE' OR t_mensaje='HOTLINE'OR t_mensaje='HOTLINE-ANEXO',0))as ATE_MENSAJE_ESPECIAL_IVR,

SUM(IF(t_mensaje='CODIGO' OR t_mensaje='GENERAL' OR t_mensaje='GENERAL PRE' OR t_mensaje='HOTLINE'OR t_mensaje=       
'HOTLINE-ANEXO',1,0)) AS TOTAL_MSJE_ESPECIAL_IVR,
  SUM(IF(t_mensaje='' OR t_mensaje='NORMAL' OR t_mensaje='CODIGO' OR t_mensaje='GENERAL' OR  t_mensaje='GENERAL PRE' OR t_mensaje='HOTLINE'OR t_mensaje='HOTLINE-ANEXO',1,0)) AS TOTAL_C_CENTER    
FROM ivr.log log_0
WHERE log_0.fecha_date>='2008-05-26' 
AND log_0.fecha_date<='2008-06-31'  
GROUP BY YEAR(log_0.fecha_date),MONTH(log_0.fecha_date),dayname(log_0.fecha_date)ORDER BY (log_0.fecha_date) ASC LIMIT 0,100
Lo que pasa es que cuando agrupo por semana me agrupa de domingo a sabado, Oye y como sería con weekofyear o weekday???

Gracias por sus aportes
  #4 (permalink)  
Antiguo 07/06/2008, 10:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

No uses dayname(log_0.fecha_date)=0, porque lo que devuelve dayname es el nombre del mes, no el número, generalmente en inglés, aunque eso también depende de otros parámetros.
Usa para lo que quieres weekday(), como te pongo aquí
CASE
WHEN weekday(log_0.fecha_date) = 0 THEN "Lunes"
WHEN weekday(log_0.fecha_date) = 1 THEN "Martes"
WHEN weekday(log_0.fecha_date) = 2 THEN "Miercoles"
WHEN weekday(log_0.fecha_date) = 3 THEN "Jueves"
WHEN weekday(log_0.fecha_date) = 4 THEN "Viernes"
WHEN weekday(log_0.fecha_date) = 5 THEN "Sabado"
WHEN weekday(log_0.fecha_date) = 6 THEN "Domingo"
ELSE "NUUL_DIA" END AS DIA,

Te lo he puesto también aquí.

GROUP BY YEAR(log_0.fecha_date),MONTH(log_0.fecha_date),wee kday(log_0.fecha_date)

Deberías decirnos cómo quieres que te salga el listado y con un ejemplo.

En cuanto a weekofyear(), es una función que te dice a qué semana del año pertenece la fecha. No sé si la necesitarás para tu caso, creo que no, pero dinos qué quieres sacar exactamente.
weekday() te será muy útil, pues una sintaxis como weekday(campofecha) as ordendia puede servirte para ordenar por días de la semana, aunque para eso te basta con la fecha, claro. Pero imagina que quisieras ordenar primero por el día de la semana, te bastará con poner ORDER BY ordendia, y ya te ordenará primero los lunes, luego los martes, y así hasta el domingo.
  #5 (permalink)  
Antiguo 08/06/2008, 12:20
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

Hola Jurema:

Mira el tema es el siguiente, en el siguiente codigo la consulta me lista :año, mes, fecha, día, total trafico.
Cuando el Group By, lo hago por : YEAR(log_0.fecha_date),MONTH(log_0.fecha_date),day name(log_0.fecha_date). la consulta me devuelve el listado de registros ordenados por fecha o por lo que yo quiera, esto esta bien.
Pero ahora cuando hago Group By por week(log_0.fecha_date), comienzan mis problemas: Para el rango de fechas del ejemplo 1 al 8 de Junio, me devuelve dos semanas, eso esta bien pero: lo que pasa es que el domingo 1 lo agrupa con los días 2 al 7, y el 8 lo cuenta como una nueva semana. Lo que yo necesito es que las semanas las agrupe de lunes a domingo y no de domingo a sabado. o sea necesito que el domingo 1 sea uan semana (para este ejemplo) y la otra semana sea desde el lunes 2 al domingo 8.

Código:
SELECT Year(log_0.fecha_date) as `AÑO`,
CASE 
WHEN MONTH(log_0.fecha_date) = 1 THEN "enero"
WHEN MONTH(log_0.fecha_date) = 2 THEN "febrero"
WHEN MONTH(log_0.fecha_date) = 3 THEN "marzo"
WHEN MONTH(log_0.fecha_date) = 4 THEN "abril"
WHEN MONTH(log_0.fecha_date) = 5 THEN "mayo"
WHEN MONTH(log_0.fecha_date) = 6 THEN "junio"
WHEN MONTH(log_0.fecha_date) = 7 THEN "julio"
WHEN MONTH(log_0.fecha_date) = 8 THEN "agosto"
WHEN MONTH(log_0.fecha_date) = 9 THEN "septiembre"
WHEN MONTH(log_0.fecha_date) = 10 THEN "octubre"
WHEN MONTH(log_0.fecha_date) = 11 THEN "noviembre"
WHEN MONTH(log_0.fecha_date) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,log_0.fecha_date as `FECHA`,
CASE 
WHEN weekday(log_0.fecha_date) = 0 THEN "Lunes"
WHEN weekday(log_0.fecha_date) = 1 THEN "Martes"
WHEN weekday(log_0.fecha_date) = 2 THEN "Miercoles"
WHEN weekday(log_0.fecha_date) = 3 THEN "Jueves"
WHEN weekday(log_0.fecha_date) = 4 THEN "Viernes"
WHEN weekday(log_0.fecha_date) = 5 THEN "Sabado"
WHEN weekday(log_0.fecha_date) = 6 THEN "Domingo"
ELSE "NUUL_DIA" END AS DIA,
  SUM(IF(ROW_ID,1,0)) AS TOTAL_TRAFICO
FROM ivr.log log_0
WHERE log_0.fecha_date>='2008-06-01' 
AND log_0.fecha_date<='2008-06-08'  
GROUP BY week(log_0.fecha_date)
ORDER BY (log_0.fecha_date)
espero haber sido claro, si no (y si aun tienes paciencia) me preguntas

Desde ya gracias
  #6 (permalink)  
Antiguo 08/06/2008, 13:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

No te preocupes: paciencia tengo alguna.

Prueba agrupando así la parte de la semana: GROUP BY WEEK(nombrecampo,1)

el 1 es el mode. De ese modo, la semana comenzará en lunes. Hay otras posibilidades; si no te va bien este mode, mira en el manual de MySQL la función WEEK(), y aplícale el mode según tus necesidades.

Última edición por jurena; 08/06/2008 a las 14:07
  #7 (permalink)  
Antiguo 08/06/2008, 20:06
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Que el primer dia de la semana sea Lunes y no Domingo???

Una vez más por Jurena

Muchas gracias eso funcionó perfecto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:51.