从 MySQL 获取每小时数据

时间:2021-01-28 08:43:01

标签: mysql

下面的查询检索日期每小时并将数据分组为每小时格式

SELECT Hour(created)   AS hour, created,image
    FROM   user_screenshot
    WHERE  created BETWEEN ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - 
                              INTERVAL 23 hour ) AND Now() AND date(created) = '2021-01-27'
    GROUP  BY hour 
    ORDER  BY ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour )

它以这种方式打印数据enter image description here

没关系。但是是否可以检索属于该小时的所有记录。对于上面的示例,查询表示 447 小时内有 21 条记录,1 小时内有 22 条记录。是否有可能在一个查询中获取那些存在于数据库中的那些时间的结果。

以这种方式期望输出

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以在同一张表上使用 INNER JOIN 来做到这一点。

SELECT a.hour, a.Count, b.* FROM user_screenshot as b 
INNER JOIN (
SELECT Hour(created) AS hour, created, COUNT(*) AS Count 
FROM   user_screenshot  
WHERE  created BETWEEN ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour ) AND Now()
GROUP BY hour
ORDER  BY ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour )
) as a 
ON Hour(a.created) = Hour(b.created) WHERE date(b.created) = '2021-01-27'

答案 1 :(得分:0)

是的,您可以使用 Group_concat() 函数将所有这些值作为单个数组获取。

示例。

Group_concat(column_name) as alias_name,

这将获取一行中的所有值

相关问题