mysql查询某一天每个小时数据并统计每个小时多少条数据

mysql查询某一天每个小时数据并统计每个小时多少条数据,第1张

时间段统计,可以采用 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

可以借助于mysql的日期函数,这里提供下SQL的思路:

SELECT u.hour,

COUNT(*)

FROM (SELECT 获取create_time的小时部分 AS hour

FROM user

WHERE 获取create_time的日期部分 = 某个日期) u

GROUP BY u.hour

具体的mysql日期函数可以查一下API。

这个要有个前提的

要求你那个 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 )


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存