4

可能重复:
按时间分组记录

我有一个记录网页请求的 mysql 表。

我想写一个输出每小时请求数的sql。

INPUT:
timestamp              browser
-------------------    -------
2012-06-28 15:06:14    chrome
2012-06-28 15:12:15    IE6
2012-06-28 16:32:16    IE7

OUTPUT:
timestamp              count
-------------------    -------
2012-06-28 15:00:00    2
2012-06-28 16:00:00    1

我猜我的第一步是“截断”日期时间字段,以便我可以进行分组。搜索,我发现了一些四舍五入的例子,但没有一个可以截断。

4

4 回答 4

5
select count(no_of_requests) from table group by date(datetime_field) , hour(datetime_field)
于 2012-06-28T13:55:54.153 回答
4

尝试格式化日期

DATE_FORMAT(timestamp, '%Y-%m-%d %H') as formatted_timestamp

然后对该 formatted_timestamp 进行分组

于 2012-06-28T13:57:29.863 回答
3

假设ts_table您的表名和ts时间戳列名,

mysql> select
    ->     addtime( date_format( ts, '%Y-%m-%d %H' ), '00:00:00' ) as 'during'
    ->     , count( date_format( ts, '%Y-%m-%d %H' ) ) as 'visit_count'
    -> from ts_table
    -> group by 'during'
    -> ;
+---------------------+-------------+
| during              | visit_count |
+---------------------+-------------+
| 2012-06-28 15:00:00 |           2 |
| 2012-06-28 16:00:00 |           1 |
+---------------------+-------------+
2 rows in set (0.00 sec)
于 2012-06-28T14:49:05.760 回答
1

您应该能够按 DATE() 和 HOUR() 函数进行分组以获取输出。

于 2012-06-28T13:56:56.733 回答