2013-10-07 201 views
0

我有一个自动查询,它计算每周进行的搜索次数,目前它只显示搜索发生的月份,我希望它显示相应周的日期范围正显示出的数据,即30/09/13 - 13年7月10日MySQL日期范围

我的查询:

SELECT COUNT(*) AS `count`, 
    `region`, 
    MONTHNAME(`date`) as `month` 
FROM stores.stats 
WHERE `date` > DATE_ADD(DATE (NOW()), INTERVAL - 1 WEEK) 
    AND `date` < DATE (NOW()) 
GROUP BY `region`, 
    MONTH(`date`); 

回答

2

只需范围内添加到您的选择列表,像这样:

SELECT COUNT(*) AS `count`, 
    `region`, 
    MONTHNAME(`date`) as `month`, 
    DATE_ADD(DATE (NOW()), INTERVAL - 1 WEEK) as `range start`, 
    DATE (NOW()) as `range stop` 
FROM stores.stats 
WHERE `date` > DATE_ADD(DATE (NOW()), INTERVAL - 1 WEEK) 
    AND `date` < DATE (NOW()) 
GROUP BY `region`, 
    MONTH(`date`) 
+0

由于[NOW()](http://dev.mysql.com/doc/refman/5.5/en/d ate-and-time-functions.html#function_now)会返回一个常量(表示语句开始执行的时间),因此不需要将它放入组中。 – GarethD

+0

啊,你说的没错。编辑我的答案。 – Dan

+0

而不是有2列一开始和另一个完成,我可以只有一列?所以结果会是这样的:2013-09-30/2013-10-07 –