Foros del Web » Programando para Internet » PHP »

Por que no funciona con BETWEEN

Estas en el tema de Por que no funciona con BETWEEN en el foro de PHP en Foros del Web. Hola amigos como estais, Mirad tengo esta consulta: $consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha BETWEEN '".$_POST['fecha_inicio']."' AND '".$_POST['fecha_fin']."'"; Y ...
  #1 (permalink)  
Antiguo 27/12/2010, 18:10
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Por que no funciona con BETWEEN

Hola amigos como estais,

Mirad tengo esta consulta:

$consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha BETWEEN '".$_POST['fecha_inicio']."' AND '".$_POST['fecha_fin']."'";

Y en la Base de datos estan estos dos campos fecha_inicio y fecha_fin, la cosa es que si $_POST['fecha_inicio'] coincide con fecha_inicio de la base de tados funciona bien pero si $_POST['fecha_inicio'] no coincide aunque este comprendida entre $_POST['fecha_inicio'] y $_POST['fecha_fin'] no la muestra, alguien sabe por que no comprueba la fecha cuando no coincide la fecha_inicio aunque este comprendida entre fecha_inicio y fecha_fin?


Aver si alguien sabe por que,

Un saludo amigos
  #2 (permalink)  
Antiguo 27/12/2010, 18:18
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Imprime y pega aquí el resultado de generar esa instrucción sql, posiblemente tengas un problema de formatos.
  #3 (permalink)  
Antiguo 27/12/2010, 18:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Hola amigo, gracias por tu ayuda,

la cosa es que no genera ningun resultado

Este es el resultado al mostrar la variable $consulta_posicion

SELECT * FROM calendario WHERE Nnoticia = 1 AND fecha BETWEEN '2010-12-11' AND '2010-12-13'

ahora mismo no esta dando ningun resultado y en la base de datos hay una entrada con fecha_inicio que es = 2010-12-10 y fecha_fin = 2010-12-14

entonces deberia mostrar esta entrada verdad?

gracias por la ayuda amigo
  #4 (permalink)  
Antiguo 27/12/2010, 18:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Debería si, intenta dar vuelta las fechas:

Código PHP:
Ver original
  1. $consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha BETWEEN '".$_POST['fecha_fin']."' AND '".$_POST['fecha_inicio']."'";
  #5 (permalink)  
Antiguo 27/12/2010, 18:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

mm, acabo de probarlo amigo y tampoco muestra nada

Puse asi: $consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha BETWEEN '".$_POST['fecha_fin']."' AND '".$_POST['fecha_inicio']."'";

Es como si la fecha_inicio no coincidiese esactamente con $_POST['fecha_inicio'] aunque este entre las dos no la muestra
  #6 (permalink)  
Antiguo 27/12/2010, 18:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Prueba con esto:

Código PHP:

$consulta_posicion 
"SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha <= '".$_POST['fecha_fin']."' AND fecha >='".$_POST['fecha_inicio']."'"
  #7 (permalink)  
Antiguo 27/12/2010, 18:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Que raro, pero sigue sin arrojar ningun resultado amigo, no tiene nada mas en especual solo esa consulta que recibe la dos varibales por post asique no se que puede ser
  #8 (permalink)  
Antiguo 27/12/2010, 18:55
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Existe un registro con Nnoticia = 1? lo mejor que puedes hacer es correrlo en un phpmyadmin a ver que pasa.
  #9 (permalink)  
Antiguo 27/12/2010, 19:10
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Si amigo tengo varios registros con Nnoticia = 1 tambien he probado a correrlo en phpmyadmin pero nada,

He probado esta consulta :

$consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha <= '".$_POST['fecha']."' AND fecha_fin >= '".$_POST['fecha_fin']."'";

y si que da 3 resultados pero creo que no son los que esperaba no se si puse mal
  #10 (permalink)  
Antiguo 27/12/2010, 19:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Pero si tienes fecha de inicio y fecha de fin en la tabla, entonces la consulta es otra, es así?
  #11 (permalink)  
Antiguo 27/12/2010, 19:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Lo que esta pasando es que como literalmente no esten las fechas en la base de datos no muestra la consulta

entonces si una entrada tiene por ejemplo fecha_inicio = 2010-12-12 y fecha_fin 2010-12-14

si la consulta empieza en el dia: 2010-12-13 no la muestra eso es lo que esta pasando

hay alguna manera de solucionar esto?
  #12 (permalink)  
Antiguo 27/12/2010, 19:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

No creo que sea eso, si tienes fecha_inicio y fecha_fin de tipo date o timestamp, debe comparar igual. Pero todavia no me respondiste la pregunta y es importante para la solución. Tenés los campos fecha_inicio y fecha_fin en la tabla de la base de datos?
  #13 (permalink)  
Antiguo 27/12/2010, 19:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Si amigo estan los dos campos de tipo date
  #14 (permalink)  
Antiguo 27/12/2010, 19:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

Entonces tu sql debería ser algo así:


Código PHP:
Ver original
  1. $consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha_inicio >= '".$_POST['fecha_inicio']."' AND fecha_final <='".$_POST['fecha_final']."'";
  #15 (permalink)  
Antiguo 27/12/2010, 19:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Amigo esa consulta si arroja resultados pero todos son mayores a fecha_fin, no estan conprendidos entre fecha_inicio y fecha_fin

Siento molestar tanto con la dichosa consulta amigo
  #16 (permalink)  
Antiguo 27/12/2010, 20:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

A ver si queda:

$consulta_posicion = "SELECT * FROM calendario WHERE Nnoticia = ".$_SESSION['Nnoticia']." AND fecha_inicio <= '".$_POST['fecha_inicio']."' AND fecha_fin >='".$_POST['fecha_final']."'";
  #17 (permalink)  
Antiguo 27/12/2010, 20:05
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Acabo de darme cuenta, la consulta esta funcnionado bien pero como hay una entrada que empieza el un dia antes de la consulta esta no la muestra aunque acabe en un dia que si este dentro de las fechas de consulta creo que es eso
  #18 (permalink)  
Antiguo 27/12/2010, 20:07
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

mm, amigo esa ultima rectificacion esta bastante mas cerca, parece que est empezando a funcionar
  #19 (permalink)  
Antiguo 27/12/2010, 20:09
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

solamente se esta saltando una de las entradas pero es raro por que se esta saltando una que esta en el mismo dia de otra que si la esta mostrando, voi a ver si encuentro el fallo, no se si puede estar en algo del codigo, pero de verdad amigo te doi mil gracias por toda la ayuda que me has prestado.

Gracias amigo
  #20 (permalink)  
Antiguo 27/12/2010, 20:12
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Por que no funciona con BETWEEN

De nada, y suerte con eso, ya me voy a dormir :P
  #21 (permalink)  
Antiguo 27/12/2010, 20:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Por que no funciona con BETWEEN

Lo que pasa con la entrada que se salta es que la fecha_fin de esta es un dia menor que la fecha_fin de la consulta por eso se la esta saltando

Etiquetas: Ninguno
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 18:22.