我们在用Mysql抽取数据时候,经常需要按照天、周、月等不同的粒度对数据进行分组统计。而我们的时间可能是“2017/12/5 0:0:0”这种准确的时间。所以在进行分组之前我们需要对时间进行一下处理。

DATE_FORMAT 是MySQL内置的一个函数,作用是以不同的格式显示日期/时间数据。具体的语法如下:

DATE_FORMAT(date,format) ,其中

date:合法的日期。format:规定日期/时间的输出格式,其中format可使用的格式见文末链接。

下面我们通过具体例子来看如何通过DATE_FORMAT进行分组统计:

下表两列分别代表产品买出的准确时间(精确到秒),和买出的产品类型。

start_time product_no
2017/12/1 00:00:11 2A
2017/12/3 07:51:11 3C
2017/12/3 07:59:25 3C
2017/12/5 15:40:45 6C

现在我们需要对每天,每周,每月各个产品的销量进行统计,

1)按天统计:

select DATE_FORMAT(start_time,' %Y%m%d ') days,count(product_no) count from test group by days;

2)按周统计:

select DATE_FORMAT(start_time,' %Y%u ') weeks,count(product_no) count from test group by weeks;

3)按月统计:

select DATE_FORMAT(start_time,' %Y%m ') months,count(product_no) count from test group bymonths;

参考文献: format格式介绍

我们在用Mysql抽取数据时候,经常需要按照天、周、月等不同的粒度对数据进行分组统计。而我们的时间可能是“2017/12/5 0:0:0”这种准确的时间。所以在进行分组之前我们需要对时间进行一下处理。DATE_FORMAT是MySQL内置的一个函数,作用是以不同的格式显示日期/时间数据。具体的语法如下:DATE_FORMAT(date,format),其中date:合法的日...     带着问题去学习,我觉得是一种非常有效的学习方法,不知下面的几个问题是否也是你所需要考虑的:被 分组 日期 是否连续、 是以 日为起始日,还是以 一为起始日、 日期 跨年。在讨论 日期 查询的复杂性之前,我们有必要知道一些内建 日期 处理函数和 Date /Time( 日期 /时间)数据类型,已经有一定了解的快速浏览下就好,直接去后半部分享用正餐。
表结构如下: qty date ———————————————- 13 2005/01/17 15 2005/01/19 3 2005/01/25 105 2005/01/27 1 2005/01/31 352 2005/02/03 12 2005/02/04 255 2005/02/07 6 2005/02/18 1 2005/02/19 28 2005/02/21 1 2005/02/22 394 2005/02/23 359 2005/02/24 313 2005/02/25 325 2005/02/26 544 2005/02/27 68 2005/02/28 2 2005/03/01
目录前言 MySQL DATE _ FORM AT() 函数 按日 分组 统计 按日 进行 数据 统计 ,只是一个很常见的需求,下面我就介绍下在 MySQL 实现该功能的方法,先看一下下面的函数,该函数是我们实现 日期 统计 的核心 MySQL DATE _ FORM AT() 函数 定义和用法 DATE _ FORM AT() 函数用于以不同的格式显示 日期 /时间数据。 DATE _ FORM AT( date , form at) date 参数是合法的 日期 form at 规定 日期 /时间的输出格式。 常用的格式有: 格式 描述 %Y 年,4
自然日 季年 分组 SELECT new_ date as submit Date , ROUND(check_right/(check_count + check_add)*100,2) as rightRate, stat_time as statTime SELECT <choose> <when test="fieldCollectIndexReq.statCycle == &quot;Y&quot;">
SELECT DATE _ FORM AT(t.createTime,'%Y') as year , DATE _ FORM AT(t.createTime,'%c') as mon , t.createTime FROM chat_session t 太多 就不一一列举了 ... %M 名字(January……December); %W 星期名字(Sunday……Saturday); %D 有英语前缀的 份的 日期 (1st, 2nd, 3rd, 等等); %Y 年, 数字, 4 位;
假设表中有一个字段time,格式为Unix时间戳,现需要按照该字段 统计 每天的记录数。 利用convert函数convert(char(10),time,120) as time,然后group by time即可。 原理:convert函数将时间戳转换成ODBC标准时间(120参数指定),然后取前十位,则刚好得到完整 日期 (不含时分秒),再 分组 即可。 按 ,按年 分组 方法一样,只需要修改convert()方法第一个参数的长度。 您可能感兴趣的文章: 分组 分组 合计以及总计SQL语句(稍微整理了一下)SQL SERVER 分组 求和sql语句MY
写博客真实个费时费力的差事,好佩服那些博客阅读几十上百万的人。今天研究了半天按照 日期 分组 统计 ,没有数据就为空了,我要让他显示0呀。想了办法,都没有找到一个好的,解决方案,然后用了一个很low的方法实现了,还是把它记录下来。方法是用于 mysql ,与开发语言无关。 1、案例中的数据结构和数据如下 2、在没有解决的时候,是这样的SELECT date (downtime) AS dday, count(*