-4

我有表名为评论:

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 年的平均评论数?

4

1 回答 1

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. 然后得到 2012 年的平均评论数?

    不完全确定“平均评论数”是什么意思,但如果您想要每天的平均评论数:

    SELECT COUNT(*) / DATEDIFF('2013-01-01', '2012-01-01')
    FROM   comments
    WHERE  new_date BETWEEN '2012-01-01' AND '2013-01-01'
    
于 2013-01-15T16:42:25.857 回答