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

Mysql con consulta de fechas con dos columnas

Estas en el tema de Mysql con consulta de fechas con dos columnas en el foro de Mysql en Foros del Web. Buenos dias tengo la siguiente tabla de la renta de autos Mi consulta recibe dos valores la fecha en que quieren rentar el auto y ...
  #1 (permalink)  
Antiguo 08/09/2017, 11:51
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta Mysql con consulta de fechas con dos columnas

Buenos dias tengo la siguiente tabla de la renta de autos


Mi consulta recibe dos valores la fecha en que quieren rentar el auto y la fecha que lo quieren regresar, que comparo con fechaHoraSalida y fechaHoraregreso.

Tengo esta consulta:
Código SQL:
Ver original
  1. SELECT * FROM contratos c WHERE ( c.fechaHoraSalida  BETWEEN '2017-09-07' AND '2017-09-17') AND
  2. ( c.fechaHoraRegreso  BETWEEN '2017-09-07' AND '2017-09-17')

el problema es que de repente me trae fechas que no cumplen el rango,

lo que quiero es traer los ids de los autos que estan disponibles en las fechas que seleccione el cliente, sin que se cruzen con otras rentas.

Gracias por la ayuda.
__________________
VENIMOS A APRENDER
  #2 (permalink)  
Antiguo 08/09/2017, 12:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mysql con consulta de fechas con dos columnas

Esa consulta te deberia de regresar los ids 58 y 59, esto es correcto? porque son donde las 2 fechas de salida y de regreso coinciden con la condicion
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/09/2017, 12:11
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Mysql con consulta de fechas con dos columnas

Asi es pero el 59 se supone que esta ocupado el 08 y yo lo ocupo del 07 al 17 lo que no quiero es que salgan esos
__________________
VENIMOS A APRENDER
  #4 (permalink)  
Antiguo 08/09/2017, 12:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mysql con consulta de fechas con dos columnas

Ya entendi la consulta, entonces seria algo como esto:

Código MySQL:
Ver original
  1. select * from contratos where id_auto not in (SELECT id_auto FROM contratos c WHERE ( c.fechaHoraSalida  BETWEEN '2017-09-07' AND '2017-09-17') AND
  2. ( c.fechaHoraRegreso  BETWEEN '2017-09-07' AND '2017-09-17'))
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 08/09/2017, 12:31
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Mysql con consulta de fechas con dos columnas

Si algo asi pero por ejemplo me trae el contrato 61 y esta rentado del 7 al 9
entonces no lo podria rentar yo. Gracias amigo ya llevo rato con este detalle.
__________________
VENIMOS A APRENDER
  #6 (permalink)  
Antiguo 08/09/2017, 12:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mysql con consulta de fechas con dos columnas

Prueba con algo como esto:

Código SQL:
Ver original
  1. SELECT * FROM contratos WHERE id_auto NOT IN (SELECT id_auto FROM contratos c WHERE ( c.fechaHoraSalida  BETWEEN '2017-09-07' AND '2017-09-17') OR
  2. ( c.fechaHoraRegreso  BETWEEN '2017-09-07' AND '2017-09-17'))

en tu caso no ocups el AND porque quieres que no te de los registros que tengan hora de salida entre esas fechas u hora de salida entre esas mismas fechas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 08/09/2017, 12:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Mysql con consulta de fechas con dos columnas

Saludo

¿Y cómo se sabe que esta rentado?
¿De casualidad será con el campo fechaContrato?

De ser así, pues sería incluir la condición del campo fechaContrato
en el query, donde este campo tenga el valor por defecto que tiene.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #8 (permalink)  
Antiguo 08/09/2017, 12:50
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Mysql con consulta de fechas con dos columnas

Gracias amigo igual ya la había probado pero si pongo las fechas entre el 07 al 14 de
me trae un registro el contrato 60 entonces si esta bien la consulta, pero no puedo mostrar disponible ese por que no estoy seguro que me lo regresen ese día.

Te agradezco mucho la ayuda.
__________________
VENIMOS A APRENDER
  #9 (permalink)  
Antiguo 08/09/2017, 12:56
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Mysql con consulta de fechas con dos columnas

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo

¿Y cómo se sabe que esta rentado?
¿De casualidad será con el campo fechaContrato?

De ser así, pues sería incluir la condición del campo fechaContrato
en el query, donde este campo tenga el valor por defecto que tiene.
No tomo en cuenta un estado del vehículo (rentado o libre) por que tendría la misma problemática cuando reserven días antes.

Gracias multiprogramador.
__________________
VENIMOS A APRENDER
  #10 (permalink)  
Antiguo 08/09/2017, 13:46
 
Fecha de Ingreso: julio-2015
Ubicación: MEXICO
Mensajes: 46
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Mysql con consulta de fechas con dos columnas

Gracias amigos creo ya encontré la respuesta, me gustaría que revisaran lo que encontre les dejo el codigo:
Código MySQL:
Ver original
  1. select idAuto from contratos
  2.  (CAST(fechaHoraSalida AS DATE)  between '2017-09-22' and  '2017-09-25' )
  3.  or
  4. ( CAST(fechaHoraRegreso AS DATE)  between '2017-09-22' and '2017-09-25')
  5. ((CAST(fechaHoraSalida AS DATE)<'2017-09-22')
  6.  and
  7. (CAST(fechaHoraRegreso AS DATE)> '2017-09-22'))
  8. ((CAST(fechaHoraRegreso AS DATE)>'2017-09-25')
  9.  and
  10. (CAST(fechaHoraSalida AS DATE)< '2017-09-25'))

Si me dicen que esta bien damos por terminado el tema.
__________________
VENIMOS A APRENDER
  #11 (permalink)  
Antiguo 08/09/2017, 13:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mysql con consulta de fechas con dos columnas

Si te da bien los resultados entonces esta bien la consulta, como lo dijiste, ocupas discriminar los que tienen el rango en ambas columnas + los que estan en el rango en alguna de las 2 columnas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: columnas, select, tabla, valor
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 17:20.