Mysql按时间分组查询(每天|每月|每年)-阿里云开发者社区

开发者社区> 数据库> 正文

Mysql按时间分组查询(每天|每月|每年)

简介: 根据保存的数据类型不同,有不同的处理方式,常见的有两种保存形式: 时间戳int 日期时间datetime 时间戳 早期一直在使用的方式,缺点: 在数据库中不直观 查询的时候涉及到转换 例如在查询的时候需要将日期时间转化为时间戳:where cr...

根据保存的数据类型不同,有不同的处理方式,常见的有两种保存形式:

  1. 时间戳int
  2. 日期时间datetime

时间戳

早期一直在使用的方式,缺点:

  1. 在数据库中不直观
  2. 查询的时候涉及到转换

例如在查询的时候需要将日期时间转化为时间戳:
where created_at < UNIX_TIMESTAMP('2018-9-28 00:00:00')

UNIX_TIMESTAMP()可以直接表示当前的时间戳

时间戳转化为日期时间:
SELECT FROM_UNIXTIME(875996580)

FROM_UNIXTIME第二个参数用于指定日期格式,例如:

SELECT SUM(price), FROM_UNIXTIME(created_at, '%m%d') as day FROM table GROUP BY day
... WHERE FROM_UNIXTIME(created_at, '%Y') = '2018'

常用的格式是这样的:%Y%m%d%H%i%s

日期时间

可以直接进行比较

格式转化:
DATE_FORMAT()

SELECT SUM(price), DATE_FORMAT(created_at, '%m%d') as day FROM table GROUP BY day

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章