Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/12/2008, 15:10
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: Query usando Interval

Por lo que veo puede ser un problema aritmético:
CURDATE() devuelve el DIA actual, al que si se le substraen 24 horas, se le resta un día. Como CURDATE() de vuelve un DATE y no un DATETIME, esto:
Código:
DATE(clicked_date) > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
significa que devuelva la información que sea mayor al día de ayer... Del DIA de ayer, esto es todo lo que comience con el día actual a las 00:00:00 horas, lo que no es lo que estás buscando.
Si lo que quieres es la información de las últimas 24 horas, entonces debes procesar las fechas como DATETIME, no como DATE:
Código:
clicked_date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
o bien considerar que clicked_date sea mayor o igual a la fecha indicada:
Código:
clicked_date >= DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
Personalmente, prefiero usar NOW(), que me devuelve DATETIME actual y no CURDATE(), que sólo devuelve la fecha, porque de esa forma puedes calcular la consulta sobre las últimas 24 horas reales (en tu ejemplo mejorado si la consulta la haces a las 23:59 te devovlerá la info de casi dos días completos), esto sería:
Código sql:
Ver original
  1. SELECT
  2.   title AS MYTITLE,
  3.   SUM(clicks) AS SUCLICKS,
  4.   COUNT(id) AS NUMBER,
  5.   permalink
  6. FROM most_viewed
  7. WHERE clicked_date >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
  8. GROUP BY MYTITLE
  9. ORDER BY SUCLICKS DESC
  10. LIMIT 0, 5;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)