我有表名为评论:
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 年的平均评论数?
确实不应该将时间值存储在字符串类型的列中。我建议您首先将 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`;
(显然您需要更新您的应用程序代码才能使用这个新列)。
然后:
如何仅选择 2012 年的记录
您可以简单地在过滤器中使用不等式运算符:
SELECT *
FROM comments
WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01'
然后得到 2012 年的平均评论数?
不完全确定“平均评论数”是什么意思,但如果您想要每天的平均评论数:
SELECT COUNT(*) / DATEDIFF('2013-01-01', '2012-01-01')
FROM comments
WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01'