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

Contultar entre fechas para mysql

Estas en el tema de Contultar entre fechas para mysql en el foro de Mysql en Foros del Web. Hola amigos... Tengo un formulario con dos campos input tipo fecha ( Fecha_Inicial -- Fecha_Final ) Tengo una tabla MySQL que tiene un listado de ...
  #1 (permalink)  
Antiguo 17/03/2017, 00:44
Avatar de insyse  
Fecha de Ingreso: abril-2005
Ubicación: Colombia
Mensajes: 206
Antigüedad: 19 años
Puntos: 5
Contultar entre fechas para mysql

Hola amigos...

Tengo un formulario con dos campos input tipo fecha (Fecha_Inicial -- Fecha_Final)

Tengo una tabla MySQL que tiene un listado de habitaciones con fechas de reservacion asi:



Como puedo hacer una consulta para determinar si las fechas entre mis cuadros input (Fecha_Inicial -- Fecha_Final), NO están entre las fechas de la tabla?

Estaba usando esta, pero, solo me compra a las dos fechas de inicio y final, pero no las intermedias...


Código PHP:
$consulta "SELECT `id` FROM `hab`  WHERE `id` NOT IN 
(SELECT `id_hab` FROM `reservas` WHERE `estado` ='reservado' AND ('$Fecha_Inicial' BETWEEN `fec_ini` AND `fec_fin`) AND ( '$Fecha_Final' BETWEEN `fec_ini` AND `fec_fin`))"

Gracias de antemano
__________________
.................................................. ...........................
No todos nacemos aprendidos !

Última edición por insyse; 17/03/2017 a las 00:58
  #2 (permalink)  
Antiguo 17/03/2017, 02:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Contultar entre fechas para mysql

Te recomiendo poner esta consulta en el subforo de MySQL.

Sin ver todo el código lo primero que tengo que decirte es que creo que tienes un gran problema de seguridad, en la forma como metes las variables a la consulta, te pueden hacer una inyección SQL, repito que no lo se seguro, ya que al no ver más código no te puedo decir.

Conforme a tu consulta:

¿La variable $Fecha_Inicial y $Fecha_Final, has comprobado si su valor es el esperado?
¿Los campos de la base de datos, son tipo fecha?

El único problema que veo es que te faltan dos paréntesis en la consulta, aunque no te se decir si son necesarios, ya que cada version de MySQL es un mundo, no obstante yo, personalmente los hubiera puesto, para englobar las dos consultas BETWEEN y asegurarte que se cumplan las dos condiciones a la vez. No se si esto resolverá tus problemas.

SELECT `id` FROM `hab` WHERE `id` NOT IN
(SELECT `id_hab` FROM `reservas` WHERE `estado` ='reservado' AND ( ('$Fecha_Inicial' BETWEEN `fec_ini` AND `fec_fin`) AND ( '$Fecha_Final' BETWEEN `fec_ini` AND `fec_fin`) ) )

Un salud, espero que te sirva

Última edición por markus18; 17/03/2017 a las 02:42
  #3 (permalink)  
Antiguo 17/03/2017, 11:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Contultar entre fechas para mysql

Tu problema es SQL, no PHP y la consulta correcta debe ser:

columna_de_tabla BETWEEN valor_inicial AND valor_final

Muevo tu tema al foro de MySQL, donde te pueden orientar mejor.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: fecha, formulario, php, select
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 11:38.