MySQL中按周、月、季、年分组统计

根据日期,按照周、月、季、年对数据进行分组统计

一、前言

    带着问题去学习,我觉得是一种非常有效的学习方法,不知下面的几个问题是否也是你所需要考虑的:被分组的日期是否连续、周是以周日为起始日,还是以周一为起始日、日期跨年。在讨论日期查询的复杂性之前,我们有必要知道一些内建日期处理函数和Date/Time(日期/时间)数据类型,已经有一定了解的快速浏览下就好,直接去后半部分享用正餐。

二、内建日期处理函数

  • NOW() 函数

  定义和用法:

NOW() 返回当前的日期和时间。

 查询

select now();

结果

 

  • UNIX_TIMESTAMP() 函数

定义和用法:

1  无参数调用:UNIX_TIMESTAMP()  返回值:自'1970-01-01 00:00:00'的到当前时间的秒数差
2  有参数调用:UNIX_TIMESTAMP(date) 返回值:自'1970-01-01 00:00:00'与指定时间的秒数差

查询:

select UNIX_TIMESTAMP(), UNIX_TIMESTAMP('20180912');

 结果: 

  • DATE_FORMAT() 函数 

定义和用法:

DATE_FORMAT(date,format) 函数用于以不同的格式显示日期/时间数据。

查询:

select DATE_FORMAT(NOW(),'%Y-%m-%d');

结果: 

 

三、 Date类型

  • date数据类型
数据类型 描述
DATE() 日期。格式:YYYY-MM-DD

注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME() 时间。格式:HH:MM:SS

注释:支持的范围是从 '-838:59:59' 到 '838:59:59&

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值