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

consulta entre fechas MM-YYYY Rango MM-YYYY

Estas en el tema de consulta entre fechas MM-YYYY Rango MM-YYYY en el foro de Mysql en Foros del Web. Hola a Todos! amigos mi problema es el siguiente. necesito realizar una consulta en entre dos fechas MM-YYYY y MM-YYYY MM -- > mes, ejemplo: ...
  #1 (permalink)  
Antiguo 01/06/2010, 08:36
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 1
consulta entre fechas MM-YYYY Rango MM-YYYY

Hola a Todos!

amigos mi problema es el siguiente. necesito realizar una consulta en entre dos fechas

MM-YYYY y MM-YYYY


MM -- > mes, ejemplo: 05
YYYY --> año, ejemplo : 2010


¿como podria soluionar esto en mysql?
¿hay alguna funcion para hacer esto?

he pensado en crear campos tipo DATE. y colocarle el dia numero 01 a todas las fecha para asi poder realizar la consulta por medio de BETWEEN. pero quisiera de sus opiniones



Gracias
  #2 (permalink)  
Antiguo 01/06/2010, 13:23
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: consulta entre fechas MM-YYYY Rango MM-YYYY

Código SQL:
Ver original
  1. SELECT *FROM tabla
  2. WHERE campo BETWEEN
  3. STR_TO_DATE('2010-06','%Y-%m')
  4. AND
  5. STR_TO_DATE('2010-08','%Y-%m');

No lo he probado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 01/06/2010, 13:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

no funca amigo...
  #4 (permalink)  
Antiguo 01/06/2010, 13:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

Necesitas el primer día del mes de la primera fecha (es el uno siempre) y el último del mes de la última (para eso usas LAST_DAY, pero sobre una fecha:
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE campo BETWEEN
  2.  STR_TO_DATE(CONCAT('2010-06','-01'),'%Y-%m-%d')
  3.  AND LAST_DAY(STR_TO_DATE(CONCAT('2011-07','-01'),'%Y-%m-%d'))
  #5 (permalink)  
Antiguo 01/06/2010, 14:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

osea, que el dato que almaceno en la base de datos tambien debe llevar el uno.

de otra forma no funciona. y me evito todo eso si lo almaceno como tipo date concatenando el uno al momento de insertar el dato.

pero que tal si le quito el - y lo inserto como entero y despues hago un BETWEEN sobre ese entero. me evitaria almacenar el dia uno y ademas mi consulta con tipo numerico se optimizara...
  #6 (permalink)  
Antiguo 02/06/2010, 14:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

Hay muchas soluciones, pero yo lo solucionaría con programación, es decir, en el PHP. Haría que una función me ofreciera el último día del mes de un determinado año. Para la primera fecha no tendría problema. Cuando selecciono del primer selector el año y mes, le añado el día, en este orden 2010-02-01; y para el otro selector hago una función con PhP, por ej., que me devuelva el último día (piensa en los bisiestos; pide ayuda en el foro PHP, pero antes mira en la red, hay muchísimas). Luego hago la consulta con esos datos sobre la base.
  #7 (permalink)  
Antiguo 02/06/2010, 15:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

Gracias Jurena...


realmente no estoy usando php estoy usando JAVA, pero eso es transparente.

el problema lo tengo parcialmente solucionado por que creo que puede haber una mejor solución.

la consulta que necesito realizar es a un campo VARCHAR(7) en el cual tengo alojado el texto con este formato YYYY-MM | año-mes | ejemplo: 2010-03

básicamente es búsqueda entre meses. lo que hago es pasarlo ha tipo DATE
y lo almaceno en este Formato: YYYY-MM-DD - agregándole el 01 a los días. y al momento de consultar también concateno 01 para que conincida con el registro.

por que digo que no es la mejor solución por que creo que ese 01 del día para los registros me causan mucha redundancia.

Gracias...
  #8 (permalink)  
Antiguo 02/06/2010, 16:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

¿Y por qué has usado un campo VARCHAR y no directamente un o DATE? Ese es parte del problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 03/06/2010, 09:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: consulta entre fechas MM-YYYY Rango MM-YYYY

en un campo DATE no puedo almacenar un tipo de dato con esta estructura YYYY-MM | año-mes


pero si uso uno date para almacenar esto YYYY-MM-DD - año-mes-dia .. lo que digo es que creo que concatenar los días a la fecha no es optimo.

Etiquetas: fechas
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 08:23.