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

Consulta entre dos campos tipo fecha

Estas en el tema de Consulta entre dos campos tipo fecha en el foro de Mysql en Foros del Web. Buenos dias quiero realizar la siguiente consulta pero me arroja valores vacios y en la base de datos existe un registro que deberia arrojar: @import ...
  #1 (permalink)  
Antiguo 13/01/2013, 10:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 14 años, 11 meses
Puntos: 2
Pregunta Consulta entre dos campos tipo fecha

Buenos dias quiero realizar la siguiente consulta pero me arroja valores vacios y en la base de datos existe un registro que deberia arrojar:


Código MySQL:
Ver original
  1. SELECT * FROM reservaciones WHERE estatus = '2' AND
  2.  (fecha_llegada OR fecha_salida)  BETWEEN
  3. '2012-12-30' AND '2013-01-05'


Espero me pudieran decir en donde tengo el error en la consulta. Gracias de antemanno.

Última edición por kriss8725; 13/01/2013 a las 10:38
  #2 (permalink)  
Antiguo 13/01/2013, 10:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta entre dos campos tipo fecha

Primero deberías aclararnos qué quieres buscar exactamente. Entiendo que buscas reservas con estatus = 2, y que a la vez tengan o bien fecha de llegada o bien de salida en ese rango de fechas (o ambas, claro).
Código MySQL:
Ver original
  1. SELECT * FROM reservaciones WHERE estatus = '2' AND
  2.      ((fecha_llegada  BETWEEN
  3.     '2012-12-30' AND '2013-01-05') OR (fecha_salida  BETWEEN
  4.     '2012-12-30' AND '2013-01-05'))
  #3 (permalink)  
Antiguo 13/01/2013, 11:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta entre dos campos tipo fecha

Código MySQL:
Ver original
  1. FROM reservaciones
  2. WHERE estatus = '2'
  3.     AND (fecha_llegada OR fecha_salida)  BETWEEN '2012-12-30' AND '2013-01-05'
En realidad me sorprende que no te haya devuelto un error de sintaxis, porque eso está completamente mal escrito.
Si quieres comparar un campo u otro con un mismo rango, debes hacer las comparaciones campo a campo. No puedes ponerlos entre paréntesis con un OR, eso no está bien, porque el parámetro inicial del BETWEEN debe ser siempre un único campo:
Código MySQL:
Ver original
  1. FROM reservaciones
  2. WHERE estatus = '2'
  3.     AND (
  4.         (fecha_llegada BETWEEN '2012-12-30' AND '2013-01-05')
  5.         OR
  6.         (fecha_salida  BETWEEN '2012-12-30' AND '2013-01-05')
  7.         )

Fuera de eso, si no devuelve datos es que no hay registros que cumplan las condiciones propuestas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, fecha, select, tipo
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 20:16.