2012-04-25 169 views
0

我已經創建了一個數據庫來存儲來自網站的統計數據,如流量。我試圖查詢數據庫中過去30天內捕獲的唯一IP地址的數量;SQL查詢日期篩選結果

SELECT COUNT(*) totalA FROM statistics GROUP by ipAddress 
AND DATE_SUB(CURDATE() ,INTERVAL 30 DAY) LIMIT 0, 30 

但是,查詢只是返回表中數據條目的數量。我用同一個查詢減去日期過濾器,並得到正確的結果,所以它只是日期過濾多數民衆贊成搞砸

任何幫助,將不勝感激感謝

回答

0

這是因爲你在ipAddress AND DATE_SUB(CURDATE(), INTERVAL 30 DAY)這是GROUP BY表達式在兩個字段之間產生邏輯AND,其中只有2個可能的值。儘管如此,你不關心這個區別,只需要count(*)

你可能想要的是:

SELECT ipAddress, DATE_SUB(CURDATE(), INTERVAL 30 DAY), COUNT(*) AS totalA 
    FROM statistics 
GROUP by ipAddress, DATE_SUB(CURDATE(), INTERVAL 30 DAY) 
LIMIT 0, 30 
0

我認爲這是你在找什麼。基本上我只是把你的日期代碼放在WHERE子句中,並將它與表中的日期列進行比較。很明顯,您需要將「entryDate」更改爲日期列的名稱。

SELECT COUNT(*) AS totalA 
FROM statistics 
WHERE entryDate >= DATE(CURDATE()-INTERVAL 30 DAY) 
GROUP BY ipAdress