Скажите, что я хочу добраться, десять записей с БОЛЬШИНСТВОМ любит за прошлые 24 часа. Вот то, что я имею до сих пор:
$date = date("o-m-d");
$query = "SELECT date_created,COUNT(to),from,to FROM likes WHERE date_created LIKE '$date%' GROUP BY to ORDER BY COUNT(to) DESC LIMIT 10";
Проблема с этим состоит в том, что это только получает максимум, который любят с ТОГО ДНЯ, неважно, как далеко в тот день это. Это не получает максимум, который любят с прошлых 24 часов.
структуре для нравится: от | до | date_created | идентификатор
даты находятся в стандартное время ISO - пример 2010-07-14T00:35:31-04:00. Произойдите прямо из ссылки PHP: дата ("c");
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
Если ваше поле date_created является типом поля datetime или timestamp, вы можете использовать DATE_SUB в предложении where следующим образом;
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
Вы должны использовать функции даты и времени вместо LIKE.
WHERE date_created >= (NOW() - INTERVAL 24 HOUR)
Таким образом, первый выключенный date_created должен быть определен как отметка времени с включенной текущей отметкой времени по умолчанию
. Если у вас есть date_modified в таблице, тогда date_modified будет иметь при обновлении текущей отметки времени
, и вы можете определить дату, созданную как отметку времени, и этот триггер для ее обновления
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
Теперь, когда у нас есть отметка времени, вы можно легко применить к столбцу некоторые функции даты mysql.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Я оставлю, что делать, в качестве упражнения для читателя, если вы не скажете милая, пожалуйста, и хочу, чтобы я дал точный синтаксис.