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

Consulta con 4 fechas

Estas en el tema de Consulta con 4 fechas en el foro de Bases de Datos General en Foros del Web. Hola, me explico: Tengo una base de datos con sus respectivos campos, entre ellos, deben insertarse una fecha de inicio (fInicio), fecha final (fFin) y ...
  #1 (permalink)  
Antiguo 29/08/2009, 13:41
 
Fecha de Ingreso: enero-2006
Ubicación: Cancún
Mensajes: 39
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Consulta con 4 fechas

Hola, me explico:

Tengo una base de datos con sus respectivos campos, entre ellos, deben insertarse una fecha de inicio (fInicio), fecha final (fFin) y la tarifa para ese rango de fechas (diaria, fin de semana, semanal, mensual - usaremos la diaria como ejemplo).

Ahora bien, cuando el cliente genera una consulta, selecciona la fecha de inicio y la fecha final de cuando quiere hacer la reserva, la pregunta es: Como seria la consulta en MySQL para hacer esto desde PHP ???

Se que se hace con BETWEEN con una fecha directa, mas sin embargo con dos fechas como podria ser ???

Desde ya muchas gracias =D
__________________
[FONT="Book Antiqua"]Me llaman Castillo, Lex Castillo...[/FONT]
  #2 (permalink)  
Antiguo 29/08/2009, 14:12
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Consulta con 4 fechas

N entiendo mucho q es lo q quieres hacer o para q es la consulta pero de todas maneras t dejo un ejemplo d BETWEEN a ver si t sirve:

$query=mysql_query("SELECT COUNT(cedula) cant FROM asistencia WHERE cedula='$cedula' AND fecha BETWEEN '$inicial' AND '$final'")or die(mysql_error());
  #3 (permalink)  
Antiguo 29/08/2009, 17:31
 
Fecha de Ingreso: enero-2006
Ubicación: Cancún
Mensajes: 39
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Consulta con 4 fechas

Hola JDEM:

Gracias por tu comentario, solo que esa manera si la se usar, lo que yo pregunto es asi, en tu ejemplo tu usas el campo "fecha" tomado de la base de datos, pero yo necesito que se genere desde ese campo "fecha" llamado (en mi base de datos) "fInicio" y ademas como limite o rango hasta "fFin", el cual es otro campo de la base de datos, entonces como diciendo en español:

Seleccioname todo lo de la tabla tarifas donde el rango de fechas seleccionadas por el usuario este entre las fechas fInicio y fFin.

Espero haberme explicado mejor. GRACIAS =)
__________________
[FONT="Book Antiqua"]Me llaman Castillo, Lex Castillo...[/FONT]
  #4 (permalink)  
Antiguo 29/08/2009, 18:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Consulta con 4 fechas

select *from tabla where fecha1 >= 'fecha1' and fecha2 <= 'fecha2'

creo que tratas de hacer esto

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 30/08/2009, 03:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta con 4 fechas

Creo que lo que quieres es lo siguiente:
tabla tarifas
tarifa | preciodia | fechainic | fechafin
tarifa1 | 100 | 2009-07-15 | 2009-08-15
tarifa2 | 80 | 2009-08-16 | 2009-09-15

Si alguien reserva los día 14 de agosto a 17 de agosto, es decir si introduce fechainic 2009-08-14 y fechafin 2009-08-17, son 4 días, ¿cuánto debería pagar?
2 días a 100 euros y otros 2 a 80, en total 360 euros.
¿Es eso?
Si es así, danos más datos sobre el tipo de campos que utilizas, etc.

Última edición por jurena; 30/08/2009 a las 15:52
  #6 (permalink)  
Antiguo 30/08/2009, 15:21
 
Fecha de Ingreso: enero-2006
Ubicación: Cancún
Mensajes: 39
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Consulta con 4 fechas

Hola:

Es eso exactamente lo que pregunto jurena, no hay mas donde buscarle, como puedo yo hacer esa consulta de esa manera !?!?!? =D
__________________
[FONT="Book Antiqua"]Me llaman Castillo, Lex Castillo...[/FONT]
  #7 (permalink)  
Antiguo 30/08/2009, 15:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta con 4 fechas

Pero antes debes dejarnos claros algunos datos.
Dinos cómo introduces y qué tipo de datos son las fechas, ¿son tipo DATE?
Imagino que no tendrás huecos, es decir, entre las fechas de las distintas tarifas no habrá huecos, serán consecutivas y cubrirán todo el año, o al menos toda la temporada ¿no es así?
Dinos cuáles son las fechainic y fechafin de cada una, de todas,y también las tarifas (si quieres inventa las tarifas o modifícalas). Con esos datos podremos hacer alguna prueba
  #8 (permalink)  
Antiguo 30/08/2009, 18:10
 
Fecha de Ingreso: enero-2006
Ubicación: Cancún
Mensajes: 39
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Consulta con 4 fechas

Como los introduzco??? Si te refieres a registrarlos a la base de datos y la consulta, pues seria por medio de un formulario, las fechas son tipo date, Son consecutivas, de acuerdo al rango que se registre, por ejemplo:

del 2009-09-01 al 2009-09-10 la tarifa es de $15
del 2009-09-11 al 2009-09-20 la tarifa es de $13

Esta seria la parte dentro de la base de datos, el cliente puede seleccionar diferentes rangos a tomar, por ejemplo:

del 2009-09-09 al 2009-09-12 lo cual el sistema arrojaria un total de: $ 66

Y asi durante el año completo, pueden ser de todo un mes, una quincena, una semana, por algunos dias o por un dia nada mas.

Por eso es que se me complica un poco.

Tambien estoy haciendo pruebas a ver como saldria y asi

De antemano muchas gracias por la ayuda =)
__________________
[FONT="Book Antiqua"]Me llaman Castillo, Lex Castillo...[/FONT]
  #9 (permalink)  
Antiguo 01/09/2009, 11:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta con 4 fechas

He creado una tabla con los campos fechainic, fechafin y tarifa (adapta las consultas a los nombres de tus campos).
Además, donde yo escribo 2009/01/30 debes escribir la fecha primera del formulario o la variable, y donde escribo 2009/02/15, la última.
Comprueba los detalles de días, haciendo diversas pruebas. Si las tarifas son consecutivas y no se solapan días, creo que funcíonará:

Una propuesta que te saca los días de cada tarifa.
SELECT fechainic, fechafin, tarifa, CASE WHEN '2009/01/30' <= fechainic AND '2009/02/15' <= fechafin THEN DATEDIFF('2009/02/15',fechainic) +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,'2009/01/30') +1 WHEN '2009/01/30' <= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,fechainic) +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,'2009/01/30') +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' <= fechafin THEN DATEDIFF('2009/02/15','2009/01/30') +1 END días FROM `tarifas` WHERE '2009/01/30' <= fechafin AND '2009/02/15' >= fechainic


La que saca el precio final
SELECT SUM(T1.tarifa * t1.días) preciofinal FROM (SELECT fechainic, fechafin, tarifa, CASE WHEN '2009/01/30' <= fechainic AND '2009/02/15' <= fechafin THEN DATEDIFF('2009/02/15',fechainic) +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,'2009/01/30') +1 WHEN '2009/01/30' <= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,fechainic) +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' >= fechafin THEN DATEDIFF(fechafin,'2009/01/30') +1 WHEN '2009/01/30' >= fechainic AND '2009/02/15' <= fechafin THEN DATEDIFF('2009/02/15','2009/01/30') +1 END días FROM `tarifas` WHERE '2009/01/30' <= fechafin AND '2009/02/15' >= fechainic)T1

Naturalmente, esto puede hacerse con programación, pero eso deberías preguntarlo en el foro PHP.
  #10 (permalink)  
Antiguo 08/09/2009, 07:05
 
Fecha de Ingreso: enero-2006
Ubicación: Cancún
Mensajes: 39
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Consulta con 4 fechas

Woooowwww, no habia visto el codigo porque no habia podido entrar al foro pero...esta cañon, asi nunca iba a encontrar la manera, ahora lo probare...Muchas gracias jurena y a todos =D
__________________
[FONT="Book Antiqua"]Me llaman Castillo, Lex Castillo...[/FONT]
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 21:40.