2013-01-15 60 views
-4

我有一個名爲comments表:MySQL的avarge計數

ID | COMMENT | DATE  | 
---|---------|----------| 
1 | TEXT... | 01/01/12 | 
2 | TEXT... | 01/01/12 | 
3 | TEXT... | 15/01/12 | 
4 | TEXT... | 01/01/13 | 

在表中有從2012年的意見,並從2013年起我如何可以選擇從2012年只有記錄,然後獲得2012的平均評論數數?

+0

請更新[您已經試過你的答案](http://www.whathaveyoutried.com) – Kermit

回答

0

一個確實不應該在字符串類型的列中存儲時間值。我建議你先把你DATE列轉換爲MySQL的DATE類型:

ALTER TABLE comments ADD COLUMN new_date DATE AFTER `DATE`; 
UPDATE comments SET new_date = STR_TO_DATE(`DATE`, '%d/%m/%y'); 
ALTER TABLE comments DROP COLUMN `DATE`; 

(顯然,你將需要更新您的應用程序代碼中使用這個新列)。

然後:

  1. 如何可以選擇從2012年只記錄

    您可以簡單地使用不平等運營商過濾:

    SELECT * 
    FROM comments 
    WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01' 
    
  2. 然後獲得平均評論數o f 2012?

    不完全知道你所說的「平均評論數」的意思,但如果你想每天的評論平均數:

    SELECT COUNT(*)/DATEDIFF('2013-01-01', '2012-01-01') 
    FROM comments 
    WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01' 
    
+0

謝謝你!學到了新東西! – ChrisMe