Foros del Web » Programando para Internet » PHP »

Realizar una consulta por fechas a mysql

Estas en el tema de Realizar una consulta por fechas a mysql en el foro de PHP en Foros del Web. hola, estoy intentando hacer una consulta a mysql que me devuelva los registros que tengan una fecha_inicio <= fecha_mandada y fecha_fin >= fecha_mandada. lo explico. ...
  #1 (permalink)  
Antiguo 28/03/2011, 08:40
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Realizar una consulta por fechas a mysql

hola, estoy intentando hacer una consulta a mysql que me devuelva los registros que tengan una fecha_inicio <= fecha_mandada y fecha_fin >= fecha_mandada.

lo explico.
tengo una tabla que se llama tarifas con los campos:
id = INT(11) auto_inc indice primario
nombre = varchar(255)
inicio = date
fin = date

el formato de date es por defecto aaaa-mm-dd

la consulta que hago es:

SELECT * FROM tarifas WHERE inicio <= 2011-03-06 AND fin >= 2011-03-06

y no consigo obtener ningun resultado

hay un registro "Marzo" en la tabla tarifas:

id => 10
nombre => Marzo
inicio => 2011-03-01
fin => 2011-03-31

Alguien me puede ayudar en esto¿?¿ GRACIAS
  #2 (permalink)  
Antiguo 28/03/2011, 08:45
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

Realiza un echo a tu consulta y ejecutala en PhpMyAdmin

Código PHP:
Ver original
  1. $consulta="SELECT * FROM tarifas WHERE inicio <= 2011-03-06 AND fin >= 2011-03-06";
  2. echo $consulta;

aunque a mi parecer, deberias realizar la consulta con between

pd: tu le dices que busque la fecha que sea menor a igual 20110306 y mayor o igual a 20110306 lo cuál no se entiende
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #3 (permalink)  
Antiguo 28/03/2011, 09:03
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

HE PROBADO MI CONSULTA DIRECTAMENTE EN MYSQL, y el resultado es:

MySql ha devuelto un valor vacio y tembien he probado esta otra consulta, no da ningun error per tambien devuelve valor vacio... donde tengo el problema no consigo verlo ¿?¿?¿?

SELECT * FROM tarifas WHERE 2011-03-06 BETWEEN inicio AND fin
  #4 (permalink)  
Antiguo 28/03/2011, 09:08
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

de que manera en la base de datos estas guardando la fecha, con que formato??
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 28/03/2011, 09:11
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
de que manera en la base de datos estas guardando la fecha, con que formato??
tengo una tabla que se llama tarifas con los campos:
id = INT(11) auto_inc indice primario
nombre = VARCHAR(255)
inicio = DATE
fin = DATE
  #6 (permalink)  
Antiguo 28/03/2011, 09:18
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

Compadre con urgencia a leer como se usa Between

Código PHP:
Ver original
  1. $consulta="SELECT * FROM tarifas WHERE TUCAMPOFECHA BETWEEN '2011-03-06' AND '2011-03-10'";

prueba con eso
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #7 (permalink)  
Antiguo 28/03/2011, 09:32
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

voy a intentar explicar como quiero que funcione la consulta:

con una tabla tarifas: con los campos (id, nombre, inicio, fin) donde hay unos registros por ejemplo estos:
campos: id // nombre // inicio // fin
reg 1-> 1 // enero // 2011-01-01 // 2011-01-31
reg 1-> 2 // febrero // 2011-02-01 // 2011-02-28

y quiero que me devuelva el registro(tarifa) que corresponde a un dia en concreto, por ejemplo: 2011-01-15

como hago la consulta¿?¿?
  #8 (permalink)  
Antiguo 28/03/2011, 09:52
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

probaste lo que postie? si coloque en la consulta el * es para que me obtenga todos los datos de la tabla TARIFA , ahora tu debes ser el encargado de recorrer esa consulta, mira pega el codigo que realizé, luego imprimelo por pantalla y copialo al PhpMyAdmin, ahi lo ejecutas y verás los resultado de la consulta, saludos.
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #9 (permalink)  
Antiguo 28/03/2011, 10:12
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

Cita:
Iniciado por vicenttur Ver Mensaje
voy a intentar explicar como quiero que funcione la consulta:

con una tabla tarifas: con los campos (id, nombre, inicio, fin) donde hay unos registros por ejemplo estos:
campos: id // nombre // inicio // fin
reg 1-> 1 // enero // 2011-01-01 // 2011-01-31
reg 1-> 2 // febrero // 2011-02-01 // 2011-02-28

y quiero que me devuelva el registro(tarifa) que corresponde a un dia en concreto, por ejemplo: 2011-01-15

como hago la consulta¿?¿?
en la tabla tarifas hay dos campos DATE: inicio y fin, y teniendo una variable $dia_concreto = "2011-01-15";

quiero una consulta que me devuelva en el caso de "2011-01-15" el registro numero 1 que es el k corresponde a la tarifa de enero, si $dia_concreto="2011-01-25" tambien me tiene que devolver el reg1 ... la consulta que me ofreces tu me busca registros en el que la fecha de la tabla este entre dos campos de fecha que le pasamos, lo que estoy intentando buscar es, una consulta en la que me busque los registros de la bd que la fecha $dia_concreto este entre los campos de inicio y fin de la tabla tarifas ...


creo que mas o menos entiendo el funcionamento de between, consulta que nos busca los registros de un campo DATE que este comprendido entre dos fechas que le pasamos, yo necesito lo contrario. Tengo una fecha cualquiera y quiero que me busque los registros que esten entre dos campos DATE de la tabla!!!.

el campo inicio es siempre inferior al campo fin de la tarifa

entonces -> dame todos los registros de la tabla tarifas que la fecha $dia_concreto este entre el campo DATE inicio y el campo DATE fin

o

dame todos los registros de la tabla tarifas que la fecha $dia_concreto sea mayor o igual al campo DATE inicio y $dia_concreto sea menor o igual al campo DATE fin

.......................

Última edición por vicenttur; 28/03/2011 a las 10:20 Razón: ampliar
  #10 (permalink)  
Antiguo 28/03/2011, 10:24
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

Código PHP:
Ver original
  1. $consulta="SELECT * FROM tarifas WHERE TUCAMPOFECHA BETWEEN '2011-03-06' AND '2011-03-10'";


sabes para que se utiliza el * , crees que si le colocas los campos especificos este los traerá??? compa esto si te sirve


Sino, como dices tú , un dia concreto es where TUCAMPOFECHA='$dia_concreto' creo que es solo cosa de práctica compa
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #11 (permalink)  
Antiguo 28/03/2011, 10:29
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

SOLUCIONADO:

solo faltaban las comillas de la consulta:


SELECT * FROM tarifas WHERE inicio < '2011-03-06' AND fin > '2011-03-06'

siento haber molestado por esta simple tonteria, hay momentos en los que es mejor descansar, y volver al cabo de un rato, nada mas sentarme y mirar el codigo php he visto k faltaban las comillas. disculpa las molestias!!!!
  #12 (permalink)  
Antiguo 28/03/2011, 10:32
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

Mejor usa Between saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #13 (permalink)  
Antiguo 28/03/2011, 10:34
Avatar de vicenttur  
Fecha de Ingreso: enero-2011
Ubicación: Formentera
Mensajes: 30
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Realizar una consulta por fechas a mysql

La consulta completa es:

public function buscar_tarifas_activas_por_dia($fecha_dia)
{
global $bd;
$sql = "SELECT * FROM " . $this->nombre_tabla;
$sql .= " WHERE activa=1";
$sql .= " AND inicio <= '" . $fecha_dia;
$sql .= "' AND fin >= '" . $fecha_dia;
$sql .= "' ORDER BY posicion,id ASC";

return $this->buscar_por_sql($sql);
}



NO ME VEO CAPAZ DE CREAR ESTA CONSULTA UTILIZANDO BETWEEN

Última edición por vicenttur; 28/03/2011 a las 10:45 Razón: correccion
  #14 (permalink)  
Antiguo 28/03/2011, 10:48
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Realizar una consulta por fechas a mysql

Bueno compa en fin, si te resulta que buenos, saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón

Etiquetas: consultabd, fechaexacta, mysql
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 22:31.