Foros del Web » Programando para Internet » PHP »

Búsqueda entre Fechas

Estas en el tema de Búsqueda entre Fechas en el foro de PHP en Foros del Web. Hola a todos! Tengo un campo DATE en el que se almacena una fecha con el formato 0000-00-00 (YYYY-mm-dd) La búsqueda la realizo del siguiente ...
  #1 (permalink)  
Antiguo 01/08/2011, 06:13
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Búsqueda entre Fechas

Hola a todos!

Tengo un campo DATE en el que se almacena una fecha con el formato 0000-00-00 (YYYY-mm-dd)

La búsqueda la realizo del siguiente modo:

Código PHP:
SELECT FROM mitabla WHERE DATE_FORMAT(faFecha'%d-%m-%Y') > '".mysql_real_escape_string($_SESSION['buscardesde'])."' and DATE_FORMAT(faFecha'%d-%m-%Y') < '".mysql_real_escape_string($_SESSION['buscarhasta'])."' ORDER BY faFecha DESC 
Pero no está funcionando, quizás estoy haciendo algo mal en la conversión, porque la idea es que quede dd-mm-YYYY, alguien me puede ayudar?

Desde ya muchas gracias!
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 01/08/2011, 06:41
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Búsqueda entre Fechas

Prueba a crear una variable en la consulta SQL, creo que no se puede usar en el WHERE como lo tienes. Algo así:

Código PHP:
SELECT *, DATE_FORMAT(faFecha'%d-%m-%Y') AS fecha FROM mitabla WHERE fecha '".mysql_real_escape_string($_SESSION['buscardesde'])."' and fecha '".mysql_real_escape_string($_SESSION['buscarhasta'])."' ORDER BY faFecha DESC 
Ahora me cuentas, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 01/08/2011, 07:25
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Búsqueda entre Fechas

Hola vgonga! gracias por responder!

Probé con lo que me pasaste pero me sale el siguiente error Unknown column 'fecha' in 'where clause' no reconoce la variable.

Saludos!
__________________
Saludos!!!
Maru.-
  #4 (permalink)  
Antiguo 01/08/2011, 07:59
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 13 años, 7 meses
Puntos: 54
Respuesta: Búsqueda entre Fechas

Cita:
Iniciado por Maru77 Ver Mensaje
Hola vgonga! gracias por responder!

Probé con lo que me pasaste pero me sale el siguiente error Unknown column 'fecha' in 'where clause' no reconoce la variable.

Saludos!
Claro, es que parece que el campo se llama faFecha y no fecha, pon el campo que exista en la tabla de la base de datos :)
  #5 (permalink)  
Antiguo 01/08/2011, 08:09
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Búsqueda entre Fechas

@historiasdemaria Si te fijas, lo he renombado con AS: DATE_FORMAT(faFecha, '%d-%m-%Y') AS fecha

@Maru77 Prueba a poner en el select los campos uno a uno que quieres seleccionar, es decir:
Código PHP:
SELECT Aquí_tus_camposDATE_FORMAT(faFecha'%d-%m-%Y') AS fecha FROM mitabla WHERE fecha '".mysql_real_escape_string($_SESSION['buscardesde'])."' and fecha '".mysql_real_escape_string($_SESSION['buscarhasta'])."' ORDER BY faFecha DESC 
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 01/08/2011, 08:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Búsqueda entre Fechas

Probé poniendo cada campo y sigue saliendo el mismo error, poniendo 'fecha' (entre comillas) el error desaparece pero no me devuelve ningún resultado.
__________________
Saludos!!!
Maru.-
  #7 (permalink)  
Antiguo 01/08/2011, 08:28
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Búsqueda entre Fechas

Puedes pegarme la consulta tal como la tienes ahora mismo, con toda la línea de PHP, es decir, con la asignación y todo.

Y, si puede ser, también la estructura de la tabla.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #8 (permalink)  
Antiguo 01/08/2011, 08:51
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Búsqueda entre Fechas

Gracias vgonga1986!!!

Esto es lo que tengo:

Código PHP:
<?PHP
require ("php/conectar_db.php");

if (isset(
$_POST['fechadesde']))  

    if (
$_SESSION['buscardesde'] != $_POST['fechadesde']) 
    
$_SESSION['buscardesde'] = $_POST['fechadesde'];  


if (isset(
$_POST['fechahasta']))  

    if (
$_SESSION['buscarhasta'] != $_POST['fechahasta']) 
    
$_SESSION['buscarhasta'] = $_POST['fechahasta'];  


// utilizo paginator
$_pagi_sql "SELECT idFallos, faExpediente, faParrafo, faContenido, DATE_FORMAT(faFecha, '%d-%m-%Y') AS fecha FROM tb_fallos WHERE 1 = 1";

if ((
$_SESSION['buscardesde'] != "") && ($_SESSION['buscarhasta'] != "") && ($_SESSION['buscarexpediente'] == "") && ($_SESSION['buscarvoz'] == ""))
{
    
//cuando todos los campos estan vacios excepto FECHA DESDE Y FECHA HASTA
    
$_pagi_sql $_pagi_sql." and 'fecha' > '".mysql_real_escape_string($_SESSION['buscardesde'])."' and 'fecha' < '".mysql_real_escape_string($_SESSION['buscarhasta'])."'";
}

$_pagi_cuantos 4//cuantos registros por pagina
$_pagi_nav_num_enlaces 5//cuantos enlaces por vez

$_pagi_propagar = array("fechadesde, fechahasta, expediente, voz");
$_pagi_result mysql_query($_pagi_sql$Link);
include(
"php/paginator.inc.php"); //llamada al paginator

while ($Row mysql_fetch_array ($_pagi_result)) {    

    
$parrafo = (str_replace("\\""",$Row["faParrafo"]));    
    
$contenido = (str_replace("\\""",$Row["faContenido"]));

?>

<table width="380" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
    <td colspan="2"><div align="center"><img src="images/bordenewstop.jpg" width="519" height="14" /></div></td>
  </tr>
  <tr>
    <td rowspan="4" width="120" class="expe"><?PHP //echo $Row["faFecha"] ?><br /><br />Expediente<br /> <?PHP echo $Row["faExpediente"?></td>
    <td width="364"></td>
  </tr>
  <tr>
    <td class="parrafo"><p><?PHP echo utf8_encode("$parrafo"?></p></td>
  </tr>
  <tr>
    <?PHP echo "<td class='leermaslink'><a class='leermas' href='leermasfallos.php?id=".$Row["idFallos"]."'><p>Leer más >></a></p></td>" ?>  </tr>
  <tr>
    <td></td>
  </tr>
  <tr>
    <td colspan="2"><div align="center"><img src="images/bordenewsdown.jpg" width="519" height="14" /></div></td>
  </tr>
</table>

<?PHP

}

echo 
"<p class='paginar'>".$_pagi_navegacion."</p>";
        
//cierra la base
mysql_close ($Link);
?>

Estructura de tabla

CREATE TABLE IF NOT EXISTS `tb_fallos` (
`idFallos` int(10) unsigned NOT NULL AUTO_INCREMENT,
`faFecha` date NOT NULL,
`faExpediente` text NOT NULL,
`faParrafo` text NOT NULL,
`faContenido` text NOT NULL,
PRIMARY KEY (`idFallos`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=231 ;
__________________
Saludos!!!
Maru.-
  #9 (permalink)  
Antiguo 01/08/2011, 09:24
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Búsqueda entre Fechas

Así me funciona a mí (no me da error):

Código PHP:
$_pagi_sql "SELECT idFallos, faExpediente, faParrafo, faContenido, DATE_FORMAT(faFecha, '%d-%m-%Y') AS faFecha FROM tb_fallos WHERE 1 = 1";

if ((
$_SESSION['buscardesde'] != "") && ($_SESSION['buscarhasta'] != "") && ($_SESSION['buscarexpediente'] == "") && ($_SESSION['buscarvoz'] == ""))
{
    
//cuando todos los campos estan vacios excepto FECHA DESDE Y FECHA HASTA
    
$_pagi_sql $_pagi_sql." and faFecha > '".mysql_real_escape_string($_SESSION['buscardesde'])."' and faFecha < '".mysql_real_escape_string($_SESSION['buscarhasta'])."'";

Si quitas las condiciones, verás cómo la sentencia SQL imprime las fechas como dd-mm-YYYY. Otra cosa es que esto te valga después para la comparación, no sé si SQL va a seguir detectando que eso es una fecha o te lo va a comparar como cadena de texto.

Un saludo y espero que te sirva.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #10 (permalink)  
Antiguo 02/08/2011, 14:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Búsqueda entre Fechas

Gracias de nuevo! :)

El error no sale, pero la conversión no la hace, cuando hago la búsqueda dd-mm-yyyy me devuelve 0, si pongo yyyy-mm-dd hace la búsqueda de forma correcta, esto sucede tanto en el servidor local como en el remoto.

Tendré que reconfigurar algo?
__________________
Saludos!!!
Maru.-
  #11 (permalink)  
Antiguo 03/08/2011, 02:46
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Búsqueda entre Fechas

No tiene sentido, si lo he hecho yo en mi base de datos y devuelve las fechas formateadas. Prueba a ejecutar esta consulta directamente en la base de datos:

SELECT DATE_FORMAT(faFecha, '%d-%m-%Y') AS faFecha FROM tb_fallos

A ver si te sale formateada.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: fechas, mysql, tabla
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 19:07.