首页 > 技术文章 > 根据时间戳对数据进行年、月、周、日分组

90s-ITBoy 2020-12-30 15:31 原文

需求:针对数据库中的数据,以时间戳来进行分组(如果数据库中存的是时间的话,也可以使用这种模板,只不过是将FROM_UNIXTIME换成DATE_FORMAT方法),分组形式分为:年、月、周、日四种;

示例表:

  

 


 表中已有数据:

  

 


按年分组:

('%Y',Y要是小写的话得到的就是年的个十位数,例如2021年,使用‘%y’得到的就是’21’)

SELECT
    FROM_UNIXTIME( create_time , '%Y' ) AS t 
FROM
    tt_user_live_buy 
GROUP BY
    t

 

 

 


 按月分组:

('%Y-%m',中间的‘-’可以去掉或者替换成‘/’,并且注意‘m’要小写,否则就会变成另一种格式的)

SELECT
    FROM_UNIXTIME( create_time , '%Y-%m' ) AS t 
FROM
    tt_user_live_buy 
GROUP BY
    t

 

 

 


 按周分组:

('%u',u大小写均可,单写‘%u’得到的仅仅是第多少个周的数据,如下图,也可以使用'%Y-%U',代表是哪一年的第多少个周,如果查询的数据时间跨度较大,最好加上年的数据)

SELECT
    FROM_UNIXTIME( create_time , '%u' ) AS t 
FROM
    tt_user_live_buy 
GROUP BY
    t

 

 

 


 按日分组:

('%Y-%m-%d')

SELECT
    FROM_UNIXTIME( create_time , '%Y-%m-%d' ) AS t 
FROM
    tt_user_live_buy 
GROUP BY
    t

 

推荐阅读