每小时计算MySQL

vu8f3i0k  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(147)

几天以来,我一直在尝试计算MySQL数据库中每小时的记录数。我有一个表,其中包含大量记录,并且包含列DATE和列TIME,其中在DATE中,记录的日期格式为2022-05-19,而在列TIME中,记录的时间格式为14:59:38。我正在尝试计算每一天每小时有多少记录。如下所示:

DATE       HOUR     PCS
22-05-18   06-07    11
22-05-18   08-09    20
.........  .....    ..
.......    21-22    33

我试过很多不同的方法,但都没有成功。例如:

SELECT 'Date', count(*) FROM `root4` 
where 
    DATE between '2022-05-01' and '2022-05-1' AND 
    TIME BETWEEN '06:11:05' AND '07:11:05'

任何帮助都是高度评价的。

pod7payv

pod7payv1#

我建议不要对列使用保留字,因为您将不得不经常避开它们。https://dev.mysql.com/doc/refman/8.0/en/keywords.html
如果将TIME存储为时间戳,则可以使用HOUR()函数提取小时,并按此分组:

SELECT
  `DATE`, 
  HOUR(`TIME`) AS `HOUR`, 
  COUNT(1)
FROM your_table
GROUP BY 
  `DATE`, 
  HOUR(`TIME`)

如果碰巧将其存储为文本,则可以使用REGEXP_SUBSTR从时间字符串中获取小时值。

SELECT
  `DATE`, 
  CAST(REGEXP_SUBSTR(`TIME`, '[0-9]+') AS UNSIGNED) AS `HOUR`, 
  COUNT(1)
FROM your_table
GROUP BY 
  `DATE`, 
  CAST(REGEXP_SUBSTR(`TIME`, '[0-9]+') AS UNSIGNED)

您可以根据需要设置HOUR列的格式,例如使用CONCAT显示01-02而不是1,但这是基本设置。

相关问题