背景

最近公司业务要求,需要生成一些订单的报表,按年、季度、月、周、日这样的维度来分别统计数据,特别来做一下记录。

代码

年、月、日这三个比较简单,应该大部分的人都知道怎么写

转成年

SELECT create_time,DATE_FORMAT(create_time,'%Y') as year 
from user

结果
在这里插入图片描述

转成月

SELECT create_time,DATE_FORMAT(create_time,'%m') as month 
from user

结果
在这里插入图片描述

转成日

SELECT create_time,DATE_FORMAT(create_time,'%d') as day
from user

结果
在这里插入图片描述

转成季度
MySQL提供了转成季度的函数quarter(指定的日期)

SELECT create_time,quarter(create_time)as quarter
from qn_user 

结果
在这里插入图片描述

转成周

MySQL提供了转成周的函数 week(指定的日期)
注1: week()函数返回的周是从0开始的,所以要展示的话需要+1
注2: week()函数返回的是以年为维度的0-52周,如果需要展示到本月第几周的话,可以使用当前日期的周数 - 当前月份1号的周数 + 1 = 当前时间对应的本月周数

-- 年为维度的周数
SELECT create_time,week(create_time) + 1 as week
from qn_user 

结果
在这里插入图片描述

-- 转成本月对应的周数
SELECT create_time,
week(create_time) - week(concat(date_format(create_time,'%Y-%m'),'-01')) + 1 as weekDay
from qn_user

结果
在这里插入图片描述
最后
这样已经可以做到业务要求的各种日期维度下的统计报表了,剩下的需要怎么展示就看业务要求了。

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐