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 l
as ú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 originalSELECT
title AS MYTITLE,
SUM(clicks) AS SUCLICKS,
COUNT(id) AS NUMBER,
permalink
FROM most_viewed
WHERE clicked_date >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY MYTITLE
ORDER BY SUCLICKS DESC
LIMIT 0, 5;