我的表架构如下所示:
+--------------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50 | NO | | 0 | |
| modified | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| created | timestamp | NO | | CURRENT_TIMESTAMP | |
+--------------------+--------------+------+-----+-------------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
我想获得名称的计数并按按天修改的名称数量分组,目前我只能按完整日期(包括时间戳)分组,例如:
SELECT name, count(*) FROM mytable GROUP BY modified
Run Code Online (Sandbox Code Playgroud)
提前致谢。
使用 MySQLDATE()
函数从时间戳中提取日期:
SELECT name, count(*) FROM mytable GROUP BY DATE(mytable.modified);
Run Code Online (Sandbox Code Playgroud)
该
DATE()
函数从日期或日期时间表达式中提取日期值。
根据您的意思,您有几种选择; 这是你的备忘单。
DAYNAME(date)
一周中的某一天(周一至周日)
DAYOFMONTH(date)
一个月中的第几天 (1-31)
DAYOFWEEK(date)
一周中的某一天 (1-7)
DAYOFYEAR(date)
一年中的某一天 (1-365)
如果您想按整个日期(而不是特定日期)分组,请忽略您可以使用的时间
DATE_FORMAT(date, format)
可以在上面的链接中找到格式说明符的完整列表,但您可能需要的是:
Date_FORMAT(date, '%Y-%m-%d')
这会将日期格式化为“YYYY-MM-DD”,您可以按此分组。