Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Ordernar datos teniendo en cuenta la fecha y x dias pasados. (http://www.forosdelweb.com/f86/ordernar-datos-teniendo-cuenta-fecha-x-dias-pasados-584040/)

oscarva 07/05/2008 16:17

Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
Hola que tal

Estoy haciendo una consulta a mi base de datos de la siguiente manera:

Código PHP:

SELECT FROM noticias WHERE estado '1' ORDER BY karma DESC LIMIT 20 

cada noticia tiene el campo fecha en formato 'timestamp' , asi que guarda la fecha en que la noticia se agrego con el formato: 2008-04-20 06:21:51

lo que quisiera saber es si en mysql directamente puedo hacer que en la consulta solo me muestre las noticias de x dias pasados, es decir me muestre por ejemplo solo las noticias de los ultimos 7 dias, o de los ultmos 30 dias, etc etc.

Un abrazo y gracias.

Nano_ 07/05/2008 16:27

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
Saludos

Prueba de la siguiente manera:

Cita:

select fecha, TIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) as Minutos, now() as HORA_ACTUAL
from noticias
where estado='1' AND TIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) = '168:00:00' ORDER BY fecha DESC
//Que seria equivalente a 7 dias
Pienso que asi te podria funcionar, de igual forma prueba y si algo lo comentas.

Hasta Pronto!

oscarva 07/05/2008 17:42

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
Gracias nano por tu respuesta, bueno te cuento que no me da resultado, la ejecuto tal como tu me dices:

Código PHP:

select fechaTIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) as Minutosnow() as HORA_ACTUAL
from noticias
where estado
='1' AND TIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) = '168:00:00' ORDER BY fecha DESC 

pero de esta forma no me tira ningun error ni tampoco ningun resultado.

ahora le quite el where estado='1' quedandome asi la llamada:

Código PHP:

select fechaTIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) as Minutosnow() as HORA_ACTUAL
from pornoticias 
AND TIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(fecha,'%Y-%m-%d %H:%i:%s')) = '168:00:00' ORDER BY fecha DESC 

y me tira el siguiente error:

Código:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND TIMEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),DATE_FORMAT(

Un saludo y gracias :aplauso:

oscarva 07/05/2008 18:06

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
Bueno luego de mucho buscar, encontre este tipo de llamada:

Código PHP:

SELECT FROM noticias WHERE estado '1' AND DATE_SUB(CURDATE(),INTERVAL 1 DAY) <= fecha ORDER BY karma DESC 


hasta ahora parece que funciona perfecto, pero me gustaría saber si alguien conoce exactamente las limitaciones.

oscarva 07/05/2008 18:15

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
bueno pues ya le encontre el primer problema, parece que el minimo valor posible para mostrar los registros es de 1 dias, es decir no podria mostrar los registros de hace 1 hora o de hace 6 horas etc etc.

jurena 08/05/2008 01:33

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
Cita:

Iniciado por oscarva (Mensaje 2394761)
bueno pues ya le encontre el primer problema, parece que el minimo valor posible para mostrar los registros es de 1 dias, es decir no podria mostrar los registros de hace 1 hora o de hace 6 horas etc etc.

Puedes encontrar los registros de hace horas, minutos, microsegundos, horas y minutos, etc.
Por ejemplo, la sintaxis para encontrar las noticias de menos de hace dos horas sería la que te pongo debajo ( Fíjate en las comillas. Revisa la sintaxis de date_add y date_sub en el manual). Existe la posibilidad de usar DATE_ADD con número negativo.

SELECT * FROM tabla WHERE campofecha > date_sub(curdate(), INTERVAL '2' HOUR)

oscarva 08/05/2008 10:35

Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.
 
gracias jurena probare asi como me dices y posteo los resultados.

saludos


La zona horaria es GMT -6. Ahora son las 11:28.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.