Foros del Web » Programando para Internet » PHP »

Algoritmo de búsqueda de fechas en MySQL y php

Estas en el tema de Algoritmo de búsqueda de fechas en MySQL y php en el foro de PHP en Foros del Web. Hola, gracias por soportar unos foros como estos y por dejar que este espacio sea público para que personas inexpertas como yo podamos preguntar. Tengo ...
  #1 (permalink)  
Antiguo 10/04/2010, 17:48
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Pregunta Algoritmo de búsqueda de fechas en MySQL y php

Hola, gracias por soportar unos foros como estos y por dejar que este espacio sea público para que personas inexpertas como yo podamos preguntar.

Tengo la siguiente tabla en una base de datos:

id, fecha_inicial, fecha_final

Hay una serie de registros que me indican periodos de tiempo para esas fechas iniciales y finales. Por ejemplo

id fecha_inicial fecha_final

1 2010-01-01 2010-03-31
2 2010-04-01 2010-06-30
3 2010-07-01 2010-09-30
4 2010-10-01 2010-12-31
5 2011-01-01 2011-03-31
6 2011-04-01 2011-06-30

.
.
.

20 2015-01-01 2015-03-31
21 2015-04-04 2015-06-30

.
.
.

Bien, ¿qué quiero hacer? Que dada una fecha cualquiera (supongamos 2010-04-10), el script me diga cuál es el id en donde la fecha se encontraría. En este caso debería de devolver el número 2 pues está entre el 2010-04-01 y 2010-06-30.

He visto algunas posibilidades con la sentencia BETWEEN del MySQL pero el tema es que me tocaría recorrer fila por fila de la base de datos, entonces si existieran muchos registros creo que puede llegar a tomar bastante tiempo y consumir recursos.

Ahora bien, de manera temporal he solucionado el problema con la siguiente consulta SQL:

SELECT * FROM `tabla` WHERE YEAR( `fecha_inicial` ) = 2010

Esto me devolvería entonces los 4 primeros registros que pertenecen al año 2010. Y buscar en 4 registros consumiría menos que buscar en n registros. Ahora, ¿hay una forma de completar esta consulta SQL para que me arroje de igual manera el mes que quiero consultar para saber el id o que utilice la sentencia BETWEEN y completar el script?

Estoy usando MySQL y php (por ahora como tengo el script no he usado el php pero si es necesario no tengo problema en hacer un for o algo similar).

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 10/04/2010, 18:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Algoritmo de búsqueda de fechas en MySQL y php

La mejor manera es convertir las fechas a UNIX e ir verificando si están dentro del renglón. Para convertir las fechas a UNIX usa strtotime y luego le haces una consulta algo parecido a esto
Código MySQL:
Ver original
  1. -- 1268092800 = 2010-03-09
  2. -- PHP: strtotime('2010-03-09') -> 1268092800
  3. SELECT * FROM `tbl_date` WHERE UNIX_TIMESTAMP(CONCAT(Inicio,' 00:00:00')) < 1268092800 AND UNIX_TIMESTAMP(CONCAT(Final,' 00:00:00')) > 1268092800
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/04/2010, 18:44
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Respuesta: Algoritmo de búsqueda de fechas en MySQL y php

Hola abimaelrc

Me acabas de hacer en cuenta de algo muy sencillo y de pura lógica. El cansancio no me está dejando pensar. Es trivial: a<X<b.

Tu consulta me funcionó muy bien, y la siguiente también

Código MySQL:
Ver original
  1. SELECT id FROM tabla WHERE fecha_inicio < '2010-04-10' AND '2010-04-10' < end_date

Muchas gracias !!!

Etiquetas: fechas, mysql, algoritmos
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 23:06.