Обычно сайты, подобные Digg и Reddit, идут по дате подачи, а не по времени голосования. Таким образом, все, что нужно, - это простой запрос SQL, чтобы найти самые популярные материалы за период времени X. Вот псевдопросмотр, чтобы найти 10 самых популярных ссылок за последние 24 часа, используя этот метод:
select * from submissions
where (current_time - post_time) < 86400
order by score desc limit 10
По сути, этот запрос говорит, что нужно найти все отправления, в которых количество секунд между моментом публикации и временем публикации меньше 86400, что в UNIX составляет 24 часа.
Если вы действительно хотите измерить популярность за интервал времени X, вам нужно будет сохранить запись и время для каждого голосования в другой таблице:
create table votes (
post foreign key references submissions(id),
time datetime,
vote integer); -- +1 for upvote, -1 for downvote
Затем вы можете создать список самых популярных сообщений между X и Y разами так:
select sum(vote), post from votes
where X < time and time < Y
group by post
order by sum(vote) desc limit 10;
Отсюда вы просто переходите, пропускаете и выполняете внутреннее соединение, не привязывая данные поста к возвращенным идентификаторам.