2014-01-17 29 views
0

我最近修改查詢我運行,每星期:自動日期變更

新建查詢

SELECT COUNT(*) as `count`, 
     `lang`, DATE(NOW()) as `week_ending` 
    FROM mytable.data 
WHERE `date` > "2014-01-13" 
    AND `date` < "2014-01-20" 
GROUP BY `lang`; 

舊的查詢與以前的日期例如

SELECT COUNT(*) as `count`, 
     `region`, DATE(NOW()) as `week_ending` 
    FROM mytable.data 
    WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) 
    AND `date` < DATE(NOW()) 
    GROUP BY `region`, DATE(NOW()); 

正如你所看到的,我已經自動將查詢日期設置爲每週更改,但是使用新查詢,它是不像以前那樣給我正確的結果?有沒有其他辦法可以讓我每週更改日期,以便我可以嘗試這種方法?新與舊之間

+1

我正在格式化查詢的可讀性。在故障排除時,這總是一個好主意。 –

+0

'date'的類型是什麼?如果它只是一個「日期」(如輸入參數所暗示的那樣),那麼您只能選擇一週中的六天。如果是時間戳,則選擇_almost_ 7天 - 您錯過了第一天的開始。閱讀[本博客文章](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx)關於處理日期/時間範圍(是的,它也適用於MySQL)。 –

回答

2

不同的是舊的查詢使用當前日期 - 7日2014-01-10意味着與2014年1月17日......

,我看到你正在使用不同的GROUP BY子句

SELECT COUNT(*) as `count`, `lang`, DATE(NOW()) as `week_ending` 
FROM mytable.data 
WHERE `date` > "2014-01-10" 
AND `date` < "2014-01-17" GROUP BY `lang`; 
+0

是的,我已經把第一個查詢中的日期更改爲舊查詢-7天(2014-01-10和2014-01-17)中的日期,就像你說的,我得到的結果與舊的查詢,以便必須意味着沒有它需要輸出的數據,我最近對錶格進行了更改,所以這就是原因。我很可能必須允許我的表填充超過7天,然後再次運行查詢?!謝謝 :) –