PHP MySQL 쿼리는 지난 24 시간 동안 가장 인기가 있습니다
-
15-09-2020 - |
문제
지난 24 시간 동안 가장 좋아하는 10 개의 기록을 얻고 싶습니다.지금까지 내가 가진 것 :
$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 시간 동안 가장 좋아하지 않습니다.
likes에 대한 구조 : |to |date_created |ID
날짜는 표준 ISO 시간에 있습니다. 예 : 2010-07-14T00 : 35 : 31-04 : 00.PHP 참조에서 직선으로옵니다 : 날짜 ( "C");
해결책
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
. 다른 팁
date_created 필드가 datetime 또는 timestamp 필드 유형이면 다음과 같이 where 절에서 date_sub를 사용할 수 있습니다.
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
. 첫 번째 OFF DATE_CREATED는 default current timestamp
에있는 시간 소인으로 정의되어야합니다.Date_Modified가 테이블에 있으면 date_modified는 on update current timestamp
가 있고 타임 스탬프로 작성된 날짜로 정의 될 수 있으며이 트리거는
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
당신이 꽤 말하지 않고 정확한 구문을주고 싶지 않으면 독자를위한 운동으로 할 일을 남길 것입니다.
Like 대신 날짜 / 시간 기능을 사용해야합니다.
WHERE date_created >= (NOW() - INTERVAL 24 HOUR)
.