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

consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

Estas en el tema de consulta con $variable(time) BETWEEN (campoTime) and (campoTime) en el foro de Mysql en Foros del Web. Hola, muchas gracias de antemano este es el primer mensaje q escribo en el foro, aunque todo lo aprendí aqui, mi pregunta es la siguiente ...
  #1 (permalink)  
Antiguo 09/02/2010, 15:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 9 meses
Puntos: 0
consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

Hola, muchas gracias de antemano este es el primer mensaje q escribo en el foro, aunque todo lo aprendí aqui, mi pregunta es la siguiente (haver si lo hago bien) :

Tengo una consulta select en un archivo php donde me mostrará un resultado segun los criterios de unos campos $_post que ya he definido en variables.Ejemplo :
sql="select * from ocio where nombre like '$nombre' and direccion like '$direccion' .......etc .
No tengo problemas en las consultas,pero ahora necesito comprovar que $time (que recoge la hora actual) esta comprendido entre dos campos de mi tabla hora_desde y hora_asta, lo intento con un BETWEEN pero no me sale.
os expongo mi select completo:
$consulta = "select * from alta_local where nombre like '%$nombre%' and musica like '$musica' and l like '$l' and m like '$m' and mi like '$mi' and j like '$j' and v like '$v' and s like '$s' and d like '$d' and baile like '$baile' and terraza like '$terraza' and genero like '$tendencia' and promocion like '$promocion' and evento like '$evento' and '$time' BETWEEN 'hora_desde' and 'hora_asta'";

con comillas y sin comillas , probe de mil formas y no me tira error pero no me devuelve el resultado.Si necesitais mas datos pedirmelos , no quiero cargar el mensaje.Nota : los dos campos de mi base de datos que uso para el between son tipo time y creo q tendrian q seguir siendo asi Gracias , mil gracias

Última edición por lookat; 09/02/2010 a las 15:54
  #2 (permalink)  
Antiguo 09/02/2010, 15:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

usa los paréntesis a ver qué pasa:
and ('$time' BETWEEN 'hora_asta' and 'hora_asta')";
  #3 (permalink)  
Antiguo 09/02/2010, 16:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

ok , ahora te digo que tal . Gracias igual
  #4 (permalink)  
Antiguo 09/02/2010, 16:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

que va , no me tira error pero no va bien , mira la hora que me recoge la variable
$time es 23:17:04 y he repasado que los valores de los don campos sean 01:00:00 y 24:00:00 y nada , le quito ese trozo de consulta y todo va de maravilla , por lo que tengo la seguridad que es la sintaxis de ese trocito de select , he utilizado between muchas veces pero nunca con esta situación. Para que sirva de referencia
  #5 (permalink)  
Antiguo 09/02/2010, 16:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

lookat,
esto funciona, pero tal vez no te devuelva resultado, porque ningún registro cumple con todos los requisitos con and que has puesto.
Pon solamente la parte referida a fecha

$consulta = "select * from alta_local where '$time' BETWEEN hora_desde and hora_asta";
Creo que las comillas que ponías al nombre del campo eran el problema.
Prueba así
$consulta = "select * from alta_local where nombre like '%$nombre%' and musica like '$musica' and l like '$l' and m like '$m' and mi like '$mi' and j like '$j' and v like '$v' and s like '$s' and d like '$d' and baile like '$baile' and terraza like '$terraza' and genero like '$tendencia' and promocion like '$promocion' and evento like '$evento' and ('$time' BETWEEN hora_desde and hora_asta)";
  #6 (permalink)  
Antiguo 09/02/2010, 16:53
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

Tienes razon :( quizas antes me dava resultados por casualidad , si solo hago la consulta con el between me funciona , muchas gracias y perdona por replicar tu respuesta , me repasare el resto del codigo . GRACIAS
  #7 (permalink)  
Antiguo 09/02/2010, 16:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

no tienes por qué disculparte. El prueba-error es un buen método de aprendizaje. Lo importante es que lo hayas resuelto. Vuelve a comprobar con toda la consulta y eliminados esos apóstrofes que habías puesto a los nombres de esos dos campos.
saludos
  #8 (permalink)  
Antiguo 09/02/2010, 17:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

Sigo teniendo conflicto y sabes que pienso ...... que el problema esta a la hora de comparar campos de hora , el formato de la hora , por que si quiero comparar una hora comprendida entre 23:00:00 y 00:30:00 horas ¿que crees que pasa? ummm
ya te dire si lo resuelvo .... (un numero comprendido entre 4 y 0 es un poco absoleto¿no crees? o tu opinion es que da igual eso ? gracias
  #9 (permalink)  
Antiguo 09/02/2010, 17:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta con $variable(time) BETWEEN (campoTime) and (campoTime)

Es que eso no puedes compararlo. Me explicaré: entre 23:00:00 y 00:30:00 no hay nada nunca, sí entre un día 2010-02-25 23:00:00 y 2010-02-26 00:30:00

Es cierto que en un campo time puedes poner 24:30:00, pero eso no es recomendable, salvo que quieras sumar horas. Lo mejor para lo que me dices es usar un campo DATETIME, e incluir los datos como has visto. Pero para estas cosas deberíamos saber qué clase de datos introduces, qué pretendes obtener, etc.

Etiquetas: Ninguno
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 22:15.