Mysql y fechas

NeB1

Hola buenas, necesito vuestra ayuda!

Estoy haciendo una consulta en mysql, y juraría que hay un método para trabajar con fechas de la siguiente forma, si me introducen en un campo de formulario un número (p.e. 7) y una fecha, tengo que buscar en la base de datos cualquier campo que coincida la fecha introducida, o la fecha más un día, o más 2, o más cualquier número dentro del intervalo que marca el número introducido.

Vamos, que es como si fuera un calendario de reserva de un hotel, entonces, si me introducen 7 días, a partir del 21/2/2009 tendría que mirar los ítems de la base de datos cuya fecha es 21/2/2009,
22/2/2009, 23/2/2009, ... hasta el 28/2/2009.

Sería algo así como esto?


$date="2009-03-22"
$query=mysql_query("SELECT * FROM `basedatos`.`tabla` WHERE `date`='$fecha'+interval...");

es que esa parte no la conozco mucho pero creo que es algo así....

gracias y un saludo

suaveSHOW

Y porque no haces la query entre dos fechas que tu introduzcas, es decir.
Por cierto, la selección de base de datos va en otra función, no en select.
Pero bueno, la idea mia seria esto

mysql_select_db('basedatos')

$fechafin="xxx";
$date="2009-03-22";
$query=mysql_query("SELECT * FROM tabla WHERE date='$fecha' & fin='$fechafin'");

No sé, por lo que has dicho, podrías hacerlo así.

PD: Como haces para que salga el codigo en un cuadro, yo solo veo, URL, IMG, VIDEO, SPOILER, NSFW

Igneus

Yo siempre que tuve que trabajar con fechas en php+mysql usé marcas de tiempo de Unix, siempre será más fácil trabajar con enteros que con cadenas.

minipelos

y algo así?

$query = mysql_query("SELECT * FROM `tabla` WHERE `date` BETWEEN '$fecha' AND DATE_ADD('$fecha', INTERVAL $intervalo DAY");

no he trasteado mucho con mysql, a lo mejor estoy haciendo una burrada pero bueno, por intentarlo :P

p.d.: #2 con [ code ] y [ / code ] (obviamente, sin espacios :P)

suaveSHOW

Antes no entendí muy bien que es lo que querías.

Tambien podrías hacer una función que saque la fecha fin de la que sacar la info a partir de la fecha inicial sumandole el intervalo, y luego en la query sacar las filas donde la fecha sea mayor a la incial o maxima.

Creo que se entiende mas o menos jaj.

cabron

Hola

Creo que la solución más sencilla es la que te ha dicho #4, y sí por casualidad no funciona esa query en MySQL (no sé ahora, pero siempre ha tenido poco soporte a bastantes cosas de SQL), lo que puedes hacer es sumar el rango a la fecha inicial para obtener la fecha fin antes de lanzar la query, que te quedaría así:

SELECT *
FROM tabla
WHERE tabla.fecha >= '2009-04-14' AND tabla.fecha<= '2009-04-25'

NeB1

#4 esa es la que buscaba!!

pero si funciona lo de #6 aún mejor XDDD.

ah y #2 sé que existe esa función, pero es que estoy gastando muchísimas db's en el mismo programa, y paso de hacer un select_db cada vez, después si se me olvida en algún sitio modificaré la base de datos anterior, aunque gracias.

#3 como se hace eso en php+mysql?? (pura curiosidad xD)

asias a todos!

suaveSHOW

creo que #3 se refiere a lo de las fechas en unix usando la funcion date().
y #7 gracias, no sabia que podia seleccionar asi la bd :P

Usuarios habituales

  • suaveSHOW
  • NeB1
  • cabron
  • minipelos
  • Igneus