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

Sql - Consultar por mes

Estas en el tema de Sql - Consultar por mes en el foro de Mysql en Foros del Web. Hola, tengo una tabla, con un campo integer de 8 donde me guardo la fecha en formato Ymd (20090501), si quisiera hacer una query agrupado ...
  #1 (permalink)  
Antiguo 01/06/2009, 08:11
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Sql - Consultar por mes

Hola,
tengo una tabla, con un campo integer de 8 donde me guardo la fecha en formato Ymd (20090501), si quisiera hacer una query agrupado por mes, como podria hacerlo?

saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 01/06/2009, 08:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Sql - Consultar por mes

por que no utilizas el campo de fecha tipo date?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 01/06/2009, 08:18
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Respuesta: Sql - Consultar por mes

Cita:
Iniciado por huesos52 Ver Mensaje
por que no utilizas el campo de fecha tipo date?
Porque así vino en su día en su defecto...

hay alguna manera?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 01/06/2009, 08:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sql - Consultar por mes

SELECT * FROM tabla GROUP BY SUBSTRING(campo, 1,6) ORDER BY SUBSTRING(campo, 1, 6))
Piensa que un mes no es solo un mes, sino un mes de un año; y si agrupas con substring (5,2) agruparías meses de distintos años. También podrías usar
SELECT * FROM tabla GROUP BY LEFT(campo, 6) ORDER BY LEFT (campo, 6))

e incluso podrías convertir a fecha el campo numérico tal y como lo tienes, y agrupar luego por año y mes.

EDITO: estoy con huesos52, y creo que dado ese formato no tendrías dificultad en convertir todo a DATE: sería lo mejor para el futuro.
  #5 (permalink)  
Antiguo 01/06/2009, 08:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Sql - Consultar por mes

mysql cuenta con un gran repertorio de funciones para el tratamiento de fechas que pueden servir de mucha ayuda en las operaciones.

Como dice jurena, con una sentencia update y un alter table puedes tener este campo como fecha sin variar los datos ya registrados..

cuentanos si estas interesado en cambiar el campo.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 01/06/2009, 09:01
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Respuesta: Sql - Consultar por mes

ya se me paso por la cabeza en su dia, pero de esta tabla hay varios históricos guardados y cada tabla contiene mas de 8 millones de registros... aparte también se vincula con otras tablas que utilizan ese formato... mas el código del programa que también va por el mismo sendero...

así que quizás otro día con mas tiempo, ganas y huevos lo cambio pero de momento, vamos a seguir la buena ley, si funciona y lo hace bien, no lo toques!

__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
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




La zona horaria es GMT -6. Ahora son las 04:12.