2011-08-27 168 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整天,截至上午夜。

相关问题