Foros del Web » Programando para Internet » PHP »

Sacar fechas viejas.........??????

Estas en el tema de Sacar fechas viejas.........?????? en el foro de PHP en Foros del Web. amigos tengo un codigo que trato a traves de sql, comparar dos fechas 1- Una esta en una Bd guardada 2- La otra la coloco ...
  #1 (permalink)  
Antiguo 14/06/2005, 13:51
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Sacar fechas viejas.........??????

amigos tengo un codigo que trato a traves de sql, comparar dos fechas
1- Una esta en una Bd guardada
2- La otra la coloco dentro del codigo para poder comparar las dos

Lo que quiero es realizar una consulta a una BD, la cual me arroje todas las fechas mayores a la fecha que coloco dentro de l codigo, es decir sacar la noticias viejas una ves que se vaya actualizando las BD con fechas nuevas

El codigo que uso es este:

Código PHP:
<?
$fecha
="20051212"
$anio=substr($fecha,0,4); 
$sem=substr($fecha,4,2); 
$dia=substr($fecha,6,1)+1
$diaanio=date("w",mktime(0,0,0,1,1,$anio)); 
//echo date("d/m/Y",mktime(0,0,0,1,($sem-1)*7+$dia-$diaanio,$anio)); 
$f1=date("d/m/Y",mktime(0,0,0,1,($sem-1)*7+$dia-$diaanio,$anio)); 
echo 
$f1;
//Conexion con la base
mysql_connect("localhost","root","");

//Ejecutamos la sentencia SQL
$result=mysql_db_query("noti_php","select DATE_FORMAT(Fecha2, '%d/ %m/%Y') as Fecha, numero, Titulo from noticias where Fecha2 > '$f1' ORDER BY Fecha2 ASC ");

?>
<table border= "0" width="95%">
<tr>
<th><div align="left">Fechas</div></th>
</tr>
<?
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
//echo $row['Fecha'];
echo "<tr><td><A href='../ver_noti_todo2.php?numero=".$row['numero']."'>".$row['Fecha']."</a></td></tr>";
echo 
'<tr><td>'.$row["Titulo"].'<HR></td></tr>';
}
mysql_free_result($result)
?>
alguien me podra dar una mano, o decirme como puedo optener la fechas mas viejas dentro de la BD, la cual solo tiene un campo de Fecha de tipo DATE

__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 14/06/2005, 14:28
Avatar de GUNIRAN  
Fecha de Ingreso: octubre-2003
Ubicación: Rosario, Santa Fe, Argent
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Hola Amigo,

Lo que estas haciendo es sacar las fechas más recientes a la que estableces en $f1.

Las fechas cuanto más recientes son, el valor es mayor, por ejemplo 20040614 es mayor que la de ayer 20040613.

Por lo que en tu consulta en vez de usar ">" deberías usar el símbolo de menor "<" a $f1.
__________________
Saludos,
Matías Hernán Piuma - Desarrollador Web
Programador PHP Freelance, especialidad: PHP / MySQL / XHTML / CSS
Rosario, Argentina
  #3 (permalink)  
Antiguo 14/06/2005, 15:50
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
ok lo probare y te aviso, gracias por ayudarme, si alguien podria dar otra idea se lo agrdeceria
__________________
Miguel Padrón :cool:
  #4 (permalink)  
Antiguo 15/06/2005, 02:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
No hay otras ideas, solo una única verdad: fechas pasadas son inferiores .

¿por qué no usas campos DATE?? ...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 15/06/2005, 06:22
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Segui el consejo que me dieron, pero no me aroja ningun resultado, en la BD dato tengo fechas menores a 22/08/2005 y no me las trae no la saca de la BD

El codigo lo deje asi:

Código PHP:
<?
$fecha
="20052512"
$anio=substr($fecha,0,4); 
$sem=substr($fecha,4,2); 
$dia=substr($fecha,6,1)+1
$diaanio=date("w",mktime(0,0,0,1,1,$anio)); 
//echo date("d/m/Y",mktime(0,0,0,1,($sem-1)*7+$dia-$diaanio,$anio)); 
$f1=date("d/m/Y",mktime(0,0,0,1,($sem-1)*7+$dia-$diaanio,$anio)); 
echo 
$f1;
//Conexion con la base
mysql_connect("localhost","root","");

//Ejecutamos la sentencia SQL
$result=mysql_db_query("noti_php","select DATE_FORMAT(Fecha2, '%d/ %m/%Y') as Fecha, numero, Titulo from noticias where Fecha2 <  '$f1' ORDER BY Fecha2 ASC ");

?>
<table border= "0" width="95%">
<tr>
<th><div align="left">Fechas</div></th>
</tr>
<?
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
//echo $row['Fecha'];
echo "<tr><td><A href='../ver_noti_todo2.php?numero=".$row['numero']."'>".$row['Fecha']."</a></td></tr>";
echo 
'<tr><td>'.$row["Titulo"].'<HR></td></tr>';
}
mysql_free_result($result)
?>
Ayuda
__________________
Miguel Padrón :cool:
  #6 (permalink)  
Antiguo 15/06/2005, 06:29
Avatar de GUNIRAN  
Fecha de Ingreso: octubre-2003
Ubicación: Rosario, Santa Fe, Argent
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Hola 8461277,

Fíjate que estas asignando a $f1 como un valor de esta forma 15/06/2005, estas utilizando "/" y en la base de datos se guardan con "-".

Mira este link http://dev.mysql.com/doc/mysql/en/da...functions.html
__________________
Saludos,
Matías Hernán Piuma - Desarrollador Web
Programador PHP Freelance, especialidad: PHP / MySQL / XHTML / CSS
Rosario, Argentina
  #7 (permalink)  
Antiguo 15/06/2005, 06:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
ja!... no solo el signo... todo el orden... Vuelvo a preguntar: ¿usas campos tipo DATE???... deberías!!!... y ellos usan el formato YYYY-MM-DD ...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 15/06/2005, 07:27
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Gunyran y jam, tenian razon ya funciona como yo queria, gracias por su ayuda, espero siempre contar con ustedes.

Otra pregunta, en ves de colocar la fecha dentro del codigo, puedo colocar que a partir del mes actual que busque los menores a este mes?????
Como puedo hacerlo??? es para hacerlo automatico y no cambiar manualmente la fecha, sino que detecte el mes en que estamos y saque las fechas menores a dicho mes y las muestre??? creo que con esta funcion se puede:

SELECT * FROM Ventas
WHERE Fecha > DATE_SUB(CURDATE(),
INTERVAL DAYOFMONTH(CURDATE()) DAY);
??????
__________________
Miguel Padrón :cool:
  #9 (permalink)  
Antiguo 15/06/2005, 07:34
Avatar de GUNIRAN  
Fecha de Ingreso: octubre-2003
Ubicación: Rosario, Santa Fe, Argent
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Hola,

Si, si puedes, fíajte en el link que te pase, está por ejemplo la función CURDATE() que te da la fecha actual, entonces tu consulta podría ser algo como: SELECT * FROM tabla WHERE campo_fecha < CURDATE()

Revisa en http://dev.mysql.com/doc/mysql/en/da...functions.html que hay varios ejemplos.
__________________
Saludos,
Matías Hernán Piuma - Desarrollador Web
Programador PHP Freelance, especialidad: PHP / MySQL / XHTML / CSS
Rosario, Argentina
  #10 (permalink)  
Antiguo 15/06/2005, 07:48
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
pero eso es para resultados pasados a la fecha actual (incluyendo día y año)... resondiendo concretamente lo que preguntó sería:
Código:
SELECT campos FROM tabla WHERE MONTH(campo_fecha) < 'MONTH(CURDATE())'
... aquí no se incluiría el mes actual por la validación "<".. ¿quienes incluirlo?.. pues inclúyelo: "<=".

Recomendación: www.mysql-hispano.org

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 15/06/2005, 07:52
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
Perfecto funciona bien, una pregunta cada vez que la BD se actualize con fechas nuevas las mas viejas se veran con este codigo?????

Para explicarme mejor, nuestra institucion tiene una pagina en dode le cree un tablon de noticias, la cual permi ver 7 registro o fecha de forma en que va de la fecha mas nueva a la mas vieja, es decir un LIMIT 7
Con este codigo que ustedes me ayudaron a terminar lo que queria que las restante, es decir a partir de la numero 8 hacia a bajo la fecha mas vieja se viera en otra pagina, la cual llame notas de interes, y asi se vaya actualizando la misma a medida que se valla llenando la BD??????

Estoy el cierto?????
__________________
Miguel Padrón :cool:
  #12 (permalink)  
Antiguo 15/06/2005, 07:57
Avatar de GUNIRAN  
Fecha de Ingreso: octubre-2003
Ubicación: Rosario, Santa Fe, Argent
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Le tienes que agregar el Orden, como te explico Jam:

SELECT campos FROM tabla WHERE MONTH(campo_fecha) < 'MONTH(CURDATE())' ORDER BY campo_fecha DESC

DESC = descendiente por que va desde la fecha mayor (nueva) a la menor (vieja)
__________________
Saludos,
Matías Hernán Piuma - Desarrollador Web
Programador PHP Freelance, especialidad: PHP / MySQL / XHTML / CSS
Rosario, Argentina
  #13 (permalink)  
Antiguo 15/06/2005, 08:13
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... pués creo ya se ha dicho bastante... y no tendrás problema en comprender que cuando consultas registros donde EL MES sea menor a el mes actual no es lo mismo que consultar las fechas pasadas... el simple hecho.... si tienes guardada un ... "2004-12-15" no lo recuperará con la comparación que mencioné (y que solo respondí a tus palabras) pués, apesar de que es una fecha pasada (estamos a Junio del 2005) el MES "diciembre" es mayor a "Junio" ...

... supongo no tendrás problema en conseguir lo que quieres... solo fue la aclaración.

Saludos... incluido GURINAN .. de pronto pareciera que uno solo responde a el de la duda... pero se comparten opiniones de forma abierta en general.....
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 15/06/2005, 08:49
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 15 años
Puntos: 1
gracias lo probare y le avisos
__________________
Miguel Padrón :cool:
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 07:38.