mysql根据时间段查询按小时统计

mysql根据时间段查询按小时统计,第1张

这个要有个前提的

要求你那个 MySQL 里面, time 那一列的数据类型, 是 DATETIME 或者 TIME

如果数据类型是 DATE , 那就彻底没办法了:

注:MySQL 日期时间数据类型

DATE

日期。支持的范围为’1000-01-01’到’9999-12-31’。

MySQL以’YYYY-MM-DD’格式显示DATE值,但允许使用字符串或数字为DATE列分配值。

DATETIME

日期和时间的组合。

支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。

MySQL以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。

TIME

时间。范围是’-838:59:59’到’838:59:59’。

MySQL以’HH:MM:SS’格式显示TIME值,但允许使用字符串或数字为TIME列分配值。

SQL 语句的 WHERE 部分可以这么写

WHERE

Hour( time ) = 1

OR ( Hour( time ) = 2 ANDMINUTE( time) = 0 AND Second (time ) = 0 )

时间段统计,可以采用 hour(subscribe_time) 取出小时然后分层。思路:

select

uid

,CASE WHEN HOUR(subscribe_time) BETWEEN 0 AND 1 THEN '00:00:00'

WHEN HOUR(subscribe_time) BETWEEN 2 AND 3 THEN '02:00:00'

...

ELSE '23:00:00' END -- 生成时间分层部分,insert前外层sql加上日期后作为唯一的时间值

,COUNT(*)

FROM yht_fans WHERE subscribe_time>=UNIX_TIMESTAMP(CURDATE()) and subscribe_time<=UNIX_TIMESTAMP(CURDATE())+86400

GROUP BY 1,2

假设你的表为 ta 日期字段是 dt

那么,以 2015-01-01为起始日,每5天累总计数为:

select datediff(dt, '2015-01-01') div 5 as d5 , count(*)

from ta

group by (datediff(dt, '2015-01-01') div 5)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6191578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存