MySQL用年、月、日、季度、周分别统计数据

背景

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

代码

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

转成年

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

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值