Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 07-may-2008, 16:17   #1 (permalink)
oscarva está en el buen camino
 
Avatar de oscarva
 
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 394
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.
oscarva está desconectado   Responder Citando
Antiguo 07-may-2008, 16:27   #2 (permalink)
Nano_ está en el buen camino
 
Avatar de Nano_
 
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 448
Enviar un mensaje por MSN a Nano_
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!
__________________
:.:Nano.::

Última edición por Nano_; 07-may-2008 a las 16:36.
Nano_ está desconectado   Responder Citando
Antiguo 07-may-2008, 17:42   #3 (permalink)
oscarva está en el buen camino
 
Avatar de oscarva
 
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 394
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
oscarva está desconectado   Responder Citando
Antiguo 07-may-2008, 18:06   #4 (permalink)
oscarva está en el buen camino
 
Avatar de oscarva
 
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 394
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 está desconectado   Responder Citando
Antiguo 07-may-2008, 18:15   #5 (permalink)
oscarva está en el buen camino
 
Avatar de oscarva
 
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 394
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.
oscarva está desconectado   Responder Citando
Antiguo 08-may-2008, 01:33   #6 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 509
Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.

Cita:
Iniciado por oscarva Ver Mensaje
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)

Última edición por jurena; 08-may-2008 a las 03:29.
jurena está desconectado   Responder Citando
Antiguo 08-may-2008, 10:35   #7 (permalink)
oscarva está en el buen camino
 
Avatar de oscarva
 
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 394
Re: Ordernar datos teniendo en cuenta la fecha y x dias pasados.

gracias jurena probare asi como me dices y posteo los resultados.

saludos
oscarva está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:37.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93