2011-08-27 3 views
0

나는이 쿼리를 사용하여 지난 7 일 동안 하루 동안의 행 수를 출력했습니다. 어떻게 변경하여 "완료 일"만 받습니까? 의미 : 오늘날의 결과는 계산되지 않습니다 (오늘은 완료되지 않았으므로).PHP 쿼리, 지난 7 일 동안의 결과 얻기 ("완료"일)

SELECT date(downloaddate), COUNT(id) AS num_downloads, 
     SUM(filesize) AS daily_filesize 
FROM downloads 
WHERE downloaddate > now() - INTERVAL 1 WEEK 
GROUP BY date(downloaddate) 

답변

3

curdate()을 사용하십시오. now()과 달리 시간이 포함되어 있지 않으므로 downloaddate과 오늘의 날짜를 '00 : 00 : 00 '(시작일)로 비교합니다.

즉.

SELECT date(downloaddate), COUNT(id) AS num_downloads, 
    SUM(filesize) AS daily_filesize 
FROM downloads 
WHERE downloaddate < CURDATE() 
    AND downloaddate > CURDATE() - INTERVAL 1 WEEK 
GROUP BY date(downloaddate) 
+0

Brilliant, thanks :) –

+0

+1'where' 문의 두 번째 부분에서'now()'대신'curdate()'를 사용해야 할 것입니다. 'now()'를 사용하면 첫날의 절반 만 얻게됩니다. – Andomar

+0

@Andomar, 좋은 지적은 내가 어디에서 두 번째 부분을 고려하지 않았다. –

2

이미 날짜 부분을 얻으려면 date()을 사용하고 있습니다. 그것은 where 절에 사용할 수있어 확장, 또는 같은 date(now())에 대한 속기로 curdate()를 사용 :이 지난 자정 종료 7 전체 일을 사로 잡고

WHERE downloaddate BETWEEN curdate() 
         AND curdate() - INTERVAL 1 WEEK) 

.

관련 문제