2011-08-27 63 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

輝煌,謝謝:) –

+0

+1雖然你應該在where語句的第二部分使用'curdate()'而不是'now()'。用'現在()'你只有第一天的一半。 – Andomar

+0

@Andomar,好點我沒有考慮過WHERE的第二部分。 –

2

您已使用date()獲取日期部分。延長它的使用到where條款,或使用curdate()作爲簡寫date(now()),如:

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

這將搶7整天,截至上午夜。