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

como comparo intervalos de tiempo??

Estas en el tema de como comparo intervalos de tiempo?? en el foro de Mysql en Foros del Web. Hola, estoy tratando de realizar una consulta para saber si un intervalo de tiempo existe o no. Los datos del form y de la tabla ...
  #1 (permalink)  
Antiguo 02/04/2006, 14:34
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
como comparo intervalos de tiempo??

Hola, estoy tratando de realizar una consulta para saber si un intervalo de tiempo existe o no. Los datos del form y de la tabla son los siguientes:
fecha_inc (tipo date)
hora_inc (tipo time)
fecha_fin (tipo date)
hora_fin (tipo time)

Consulta:
"SELECT * FROM intervalos WHERE (fecha_inc BETWEEN fecha_inc AND fecha_fin) AND (fecha_fin BETWEEN fecha_inc AND fecha_fin)"

Esto esta bien???..., y por otra parte la hora como la compruebo, por que el dia tiene 24 horas y si la fecha fin es el dia 20 a las 12:00, no tengo ni idea como solucionar esto...

alguna idea??
  #2 (permalink)  
Antiguo 03/04/2006, 01:31
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
que pasa?...

hola...que pasa? nadie me puede echar un cable... no pido nada hecho solo estoy aprendiendo y me gustaria comprender lo que estoy tratando de hacer.

...
  #3 (permalink)  
Antiguo 03/04/2006, 06:44
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola, yo lo que haria seria craear un string donde se concatene las varibles fecha (date) y la hora(time), de manera que quede de esta manera '2006-04-03 14:40:40' (Date time) con este formato ya puedes operar muy facilmente

$fechaHora='2006-04-03 14:40:40';

select * from Entrada where FechaHoraEntrada < $fechaHora
and $fechaHora < FechaSalida

Con esto obtienes todas las entradas entre entrada y salida por ejemplo.
(FechaHoraEntrada < $fechaHora <FechaSalida)

Espero haber sido de ayuda.
  #4 (permalink)  
Antiguo 03/04/2006, 14:14
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
gracias por responder...

Hola.. realmente lo que quiero lograr con esta consulta es que si este periodo de tiempo existe me de un alerta, esto es un listado de reservas. y la verdad es que me encuentro medio perdido en el tema, la manera que tu me dices esta bien pero no se como aplicarlo a esto. En mi BD tengo 5 campos:

codigo (num)|fecha_ini (date) | hora_ini (time) |fecha_fin (date) | hora_fin (time)

osea que si tengo al objeto 1 reservado desde el 2006-01-01 al partir de las 11:00:00 hasta el 2006-01-02 a las 11:00:00, como hago una consulta para saber que esta reserva va a estar antes o despues y no entre medio??
gracias..
  #5 (permalink)  
Antiguo 07/04/2006, 04:13
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
Exclamación finalmente logre esto, pero..

Hola finalmente logre llegar a esta consulta:
el formato de la fecha es date time:
$_POST['desde_f'] = 2006-01-01 10:00:00

"SELECT * FROM reservas WHERE desde_f <= '".$_POST['desde_f']."' AND desde_f >= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."' OR desde_f <= '".$_POST['desde_f']."' AND hasta_f >= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."' OR desde_f >= '".$_POST['desde_f']."' AND hasta_f <= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."'";

esto me respeta las fechas pero no tiene en cuenta las horas, alguna idea de por que puede ser?
  #6 (permalink)  
Antiguo 07/04/2006, 08:50
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
No puedes concatenar el dato fecha con el de la hora???, puedes convertirlo a caracter ambos, concatenarlos y de ahi convertirlos a formato fecha?...
Yo haria algo asi, la situación es, todo depende del tipo de BD que se usa, en mi caso yo uso Oracle, son comandos distintos, no se que BD usas, pero la idea mia seria similar a la de OrionKing
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #7 (permalink)  
Antiguo 07/04/2006, 13:19
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
no se que es lo que pasa..

hola yo concateno la variables y el formato resultante es datetime, utilizo mysql y el problema es en la consulta que si, me respeta las fechas, pero no la hora. La consulta que hago es la siguiente:

SELECT * FROM reservas WHERE (desde_f <= '".$_POST['desde_f']."' AND desde_f >= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."') OR (hasta_f <= '".$_POST['desde_f']."' AND hasta_f >= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."') OR (desde_f >= '".$_POST['desde_f']."' AND hasta_f <= '".$_POST['hasta_f']."' AND id_auto='".$_POST['id_auto']."')";

en la bd los campos son datetime y las variables llegan con el formato correcto (datetime) a la consulta, que es donde tengo el problema, alguna idea???
  #8 (permalink)  
Antiguo 07/04/2006, 14:04
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo problema resuelto...

hola... El error lo tenia en la consulta , y no en el formato.
esto esta bien o al menos es lo que quería hacer.

"SELECT * FROM reservas WHERE ( '".$_POST['desde_f']."'<= desde_f AND '".$_POST['hasta_f']."' >= desde_f AND id_auto='".$_POST['id_auto']."') OR ('".$_POST['desde_f']."' >= desde_f AND '".$_POST['hasta_f']."' <= hasta_f AND id_auto='".$_POST['id_auto']."') OR ('".$_POST['desde_f']."' <= hasta_f AND '".$_POST['hasta_f']."' >= hasta_f AND id_auto='".$_POST['id_auto']."')";

Saludos y gracias.
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 16:53.