문제

지난 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)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top