1.统计
我们可以使用date_format()函数格式化时间,然后进行分组操作
例如有一个学生表,结构如下
id | name | age | height | gender | create_time |
---|
1 | pan | 27 | 169 | 1 | 2022-01-13 10:20:22 | 2 | yang | 18 | 177 | 1 | 2022-03-14 09:16:42 | 3 | daisy | 25 | 156 | 2 | 2022-07-19 19:58:03 |
select date_format(create_time, '%Y') years,avg(age),count(gender) from student where create_time > "2022-01-01 00:00:00" and create_time < "2022-07-19 19:58:03" group by years;
select date_format(create_time, '%Y-%m') months,avg(age),count(gender) from student where create_time > "2022-01-01 00:00:00" and create_time < "2022-07-19 19:58:03" group by months;
select date_format(create_time, '%Y-%u') weeks,avg(age),count(gender) from student where create_time > "2022-01-01 00:00:00" and create_time < "2022-07-19 19:58:03" group by weeks;
select date_format(create_time, '%Y-%m-%d') days,avg(age),count(gender) from student where create_time > "2022-01-01 00:00:00" and create_time < "2022-07-19 19:58:03" group by days;
如果不想用date_format函数,可以使用对应的year()/month()/week()/day()函数替代
2.占位符
date_format()需要传入一个特定的占位符,mysql常用的占位符可参考下表
占位符 | 说明 |
---|
%Y | 年(4位) | %y | 年(2位) | %M | 月(英文名,如January) | %m | 月(数字,如01) | %D | 日(英文名,如1st) | %d | 日(数字,如01) | %e | 日(数字,如1) | %U | 一年中的第几周,从0开始 ,周日是第一天 | %u | 一年中的第几周,从0开始,周一是第一天 | %H | 时,24小时制,例如15 | %h | 时,12小时制,例如01 | %i | 分 | %s | 秒 |
|