Mysql datetime、时间戳按月、周、日分组查询

overme2个月前 (10-17)程序开发203
最近入手学习echarts图表插件,想要将mysql数据库中的数据按月分组查询出来。开始,想的方式是,新增一个字段存储月份,然后将该字段查询出来。

但是这种方式,一想都觉得太麻烦了,应该是可以通过时间戳转换为月份吧!网络上搜索了资料,mysql确实支持时间戳按月分组查询数据。

如果时间字段为时间戳(timestamp)或int表示的时间戳(字段是 create_time):

按月查询

SELECT FROM_UNIXTIME(create_time,’%Y%m’) months,COUNT(id) count FROM  inform where smalltype=’12_1′ GROUP BY months
order by count desc

查询效果:

按周查询

SELECT FROM_UNIXTIME(create_time,’%Y%u’) weeks,COUNT(id) count FROM  where smalltype=’12_1′ GROUP BY weeks order by count desc

按天查询

SELECT FROM_UNIXTIME(create_time,’%Y%m%d’) days,COUNT(id) count FROM  where smalltype=’12_1′ GROUP BY days order by count desc

如果时间字段类型为date或datetime,该如何分组查询呢:

按周查询

SELECT DATE_FORMAT(create_time,’%Y%u’) weeks,COUNT(id) count FROM  inform where smalltype =’12_1′ GROUP BY weeks order by count desc

按天查询
SELECT DATE_FORMAT(created_at,’%Y-%m-%d’) days,COUNT(id) count FROM  inform where smalltype =’12_1′  GROUP BY days order by count desc

按月查询
SELECT DATE_FORMAT(create_time,’%Y%m’) months,COUNT(id) count FROM  inform where smalltype =’12_1′  GROUP BY months order by count desc

相关文章


		Discuz通过DB::num_rows获取主题数量

Discuz通过DB::num_rows获取主题数量

如本文摘要所述,在Discuz二次开发过程中,想要输出某个用户的发帖数量该如何操作呢? 小编没有找到Discuz系统定义的功能,因此通过mysql命令进行查询。开始使用了如下代码 <...

Discuz二次开发Mysql查询语句

Discuz常用Mysql方法: 用法:DB::query() 1.db_mysql:配置驱动 2.set_config:配置驱动 3.connect:连接数据库 4._dbconnect:  上...


		Mysql数据库通配符查询示例 Navicat环境

Mysql数据库通配符查询示例 Navicat环境

SQL通配符是使用用特殊字符或语法拼写,用来执行模糊搜索指令的语句功能。在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。如在数据中搜...

mysql 3306端口启动失败原因及解决方案

解决方法: 1.首先,使用组合键“win+R”运行cmd,进入命令提示符窗口; 2.进入到命令提示符窗口后,在命令行中执行netstat -ano命令,查看端口进程; 3.在端口进程列表中,查找到...


		Navicat链接mysql发生10038报警原因和处理

Navicat链接mysql发生10038报警原因和处理

如摘要所述,小编最近在centos7上,通过宝塔面板搭建了Web服务和数据库服务。 局域网中其他电脑使用Navicat链接Mysql时出现10038报错: 1、初次连接宝塔搭建的mysql服务出...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。