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

Seleccionar Entre dos fechas

Estas en el tema de Seleccionar Entre dos fechas en el foro de Mysql en Foros del Web. Hola, tengo el siguiente problema al realizar una Consulta Tengo una tabla de tareas ... con fechas de inicio y fin de cada tarea. ID ...
  #1 (permalink)  
Antiguo 07/05/2010, 10:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 13 años, 11 meses
Puntos: 0
Seleccionar Entre dos fechas

Hola, tengo el siguiente problema al realizar una Consulta

Tengo una tabla de tareas ... con fechas de inicio y fin de cada tarea.

ID | TAREA | FECHA INICIO | FECHA DE FIN

Ahora necesito saber entre una determinada fecha de inicio y una determinada fecha de fin, que tareas estan activas.

He probado algunas cosas pero nada funciona ...
  #2 (permalink)  
Antiguo 07/05/2010, 12:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Seleccionar Entre dos fechas

Puedes usar el operador BETWEEN entre ambas fechas.

Véase: http://dev.mysql.com/doc/refman/5.0/...operators.html
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/05/2010, 12:43
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: Seleccionar Entre dos fechas

Cita:
He probado algunas cosas pero nada funciona ...
Que has probado?

prueba esto:

Código SQL:
Ver original
  1. SELECT *
  2. FROM tabla
  3. WHERE
  4. fecha_inicio >= now()
  5. AND
  6. fecha_final <= now()


EDITO: Llegó primero david
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 07/05/2010, 14:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Seleccionar Entre dos fechas

Amigos, si yo he entendido bien, no es eso lo que parece querer, sino una consulta con dos fechas de referencia que compare sobre otras dos, es decir, la coincidencia de dos rangos de fecha.
avatar810 lo explicó hace mucho tiempo, y pienso que debería hacer un faq porque es una pregunta que se repite con frecuencia (animo a Avatar810 a hacer el FAQ, si no está hecho ya).
La condición para que haya un día entre el rango de la fechas de una tarea y el rango de fechas de búsqueda es que la fecha primera de búsqueda sea anterior o igual a la fecha de fin de la tarea y que, al mismo tiempo, la fecha final del rango de búsqueda sea mayor o igual que la fecha de inicio.
Fecha1<=FECHA_DE_FIN
fecha2>=FECHA_DE_INICIO

La consulta sería algo así.
Código MySQL:
Ver original
  1. SELECT ID, TAREA FROM tutabla
  2.   WHERE Fecha1<=FECHA_DE_FIN AND Fecha2>=FECHA_DE_INICIO

Si haces un inner join entre dos tablas, creo que tendrás que añadir al final
GROUP BY ID

Última edición por jurena; 07/05/2010 a las 14:44
  #5 (permalink)  
Antiguo 07/05/2010, 14:34
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: Seleccionar Entre dos fechas

Cita:
Iniciado por jurena Ver Mensaje
Amigos, si yo he entendido bien, no es eso lo que parece querer, sino una consulta con dos fechas de referencia que compare sobre otras dos, es decir, la coincidencia de dos rangos de fecha.
Avatar2010,
lo explicó hace mucho tiempo, y pienso que debería hacer un faq porque es una pregunta que se repite con frecuencia (animo a Avatar2010 a hacer el FAQ, si no está hecho ya).
La condición para que halla un día entre el rango de la fechas de una tarea y el rango de fechas de búsqueda es que la fecha primera de busqueda sea anterior o igual a la fecha de fin de la tarea y que, al mismo tiempo, la fecha final del rango de búsqueda sea mayor o igual que la fecha de inicio.
Fecha1<=FECHA_DE_FIN
fecha2>=FECHA_DE_INICIO

La consulta sería algo así.
Código MySQL:
Ver original
  1. SELECT ID, TAREA FROM tutabla
  2.   WHERE Fecha1<=FECHA_DE_FIN AND Fecha2>=FECHA_DE_INICIO

Si haces un inner join entre dos tablas, creo que tendrás que añadir al final
GROUP BY ID
Jurena no he vuelto a ver a avatar2010 por acá.
Crea tu la faq y lo pones como fuente bibliográfica

Creo haber leído el post pero no lo recuerdo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 07/05/2010, 14:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Seleccionar Entre dos fechas

huesos52,
demos unos días a avatar810. Luego, si no da señales de vida, lo haremos alguno de nosotros, añadiendo la fuente de procedencia.
El post es este:
http://www.forosdelweb.com/f86/selec...fechas-693114/

Postdata: he escrito a avatar810 para solicitarle la confección del FAQ.
  #7 (permalink)  
Antiguo 07/05/2010, 17:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Seleccionar Entre dos fechas

Tratare de explicar el asunto con un ejemplo.
La tabla seria:

Tarea 1 | 1/5/2010 | 5/5/2010
Tarea 2 | 2/5/2010 | 8/5/2010
Tarea 3 | 1/3/2010 | 1/8/2010

La consulta sería: ¿Que tareas estan activas entre el 2/5/2010 y el 10/6/2010 ?
En este caso las tres tareas deverian ser el resultado.

he provado lo que propone jurena

Código MySQL:
Ver original
  1. SELECT * FROM tareas
  2. WHERE "2010-6-10" <=fin AND  "2010-5-2" >=inicio

y solo muestra la tarea 3

con BETWEEN como propone David:

Código MySQL:
Ver original
  1. SELECT * FROM tareas
  2. WHERE inicio AND fin BETWEEN "2010-5-2" AND "2010-6-10"
Solo muestra las tareas 1 y 2

En fin ... no logro enterarme donde esta el error.
Alguna otra sugerencia?
  #8 (permalink)  
Antiguo 08/05/2010, 02:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Seleccionar Entre dos fechas

Phillarmonic,
tienes otro tipo de problemas, porque las fechas no se introducen con ese formato que usas en la base de datos. Me temo que tus campos de fecha son de tipo varchar y deberían ser de tipo DATE. Además, los datos deberían ser insertados con este formato:año/mes/día
Tarea | inicio | fin
Tarea 1 | 2010/05/01 | 2010/05/05
Tarea 2 | 2010/05/02 | 2010/05/08
Tarea 3 | 2010/03/01 | 2010/08/01
Y la consulta debe ser esta (ojo, porque no la habías interpretado bien):
Código MySQL:
Ver original
  1. SELECT tarea FROM tareas WHERE '2010/05/02' <=fin AND  '2010/06/10' >=inicio

El resultado son tres registros (lo he probado), claro, porque los tres rangos de tarea tienen algún día, al menos uno, que está entre ese rango de fechas que pones. Es lo que creo que buscas. Eso se deduce de tus datos.
Si lo que buscas es otra cosa, es decir, que toda la tarea esté entre ese rango de fechas, todos los días de la tarea, la consulta será distinta y mucho más fácil. Dinos exactamente lo que quieres.

Tu problema ahora mismo es el tipo de campo, el formato con el que introduces los datos en ese campo y el formato de fecha usado en la consulta, y el modo en que has interpretado los datos de la propuesta que te hice. Revista todo y prueba estos cambios.
  #9 (permalink)  
Antiguo 08/05/2010, 09:09
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Seleccionar Entre dos fechas

Gracias Jurena ... en el ejemplo que muestro al principio las fechas estan puestas en cristiano a modo de ejemplo .... en mi DB esos campos son date y efectivamente Y-M-D ...
Asi que por lo que me dices el problema son las ///// barras y los ------ guiones?

Muchas gracias por la ayuda
  #10 (permalink)  
Antiguo 09/05/2010, 01:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Seleccionar Entre dos fechas

No, phillarmonic,
las barras y guiones no serían problema (pueden usarse las dos); otra cosa es que uses en el mes 5 en lugar de 05, por poner un ejemplo. Pero como te he dicho, también habías probado mal la consulta.
Deberías respondernos qué quieres exactamente con ejemplos de lo que tienes y lo que quieres sacar, y hacernos llegar la estructura de tu base y algunos datos
  #11 (permalink)  
Antiguo 18/05/2010, 10:10
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Seleccionar Entre dos fechas

Disculpa Jurena por tardar en responder ... tu ultimo mensaje resolvio mi problema.

Muchas gracias

Etiquetas: dos, fechas, seleccionar
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 10:18.