MySQL从具有时间戳列的表中选择循环时间间隔中的所有条目

时间:2015-03-11 09:56:58

标签: mysql sql

假设我在MySQL数据库中有一个表,其中包含以下模式。

+-----------+--------+
| timestamp | string |
+-----------+--------+

在这张表中,每个月都有很多条目。

现在我想计算表格中每天早上6点到早上10点之间的条目,并按照这个时间段对它们进行分组。

响应应该是这样的

+------+------------------------------+
| date | count in the given timeframe |
+------+------------------------------+

我的问题是如何选择重复的时间范围。我知道如何计算条目以及如何对它们进行分组。

我成功地在intervall上做到了这一点。但是每天的intervall都不一样。

 SELECT count(timestamp) as count,
 ROUND(UNIX_TIMESTAMP(timestamp)/(60 * 60 * ", hours, ")) AS timekey
 FROM event_data,
 GROUP BY timekey

2 个答案:

答案 0 :(得分:2)

假设您正在使用MySQL,可以使用以下查询:

SELECT 
    date(timestamp1) AS entrydate
    , COUNT(*) FROM mytable
WHERE 
    EXTRACT(HOUR FROM TIME(timestamp1)) BETWEEN 6 AND 10
GROUP BY 
    entrydate

其中

  • timestamp1 - >示例中的时间戳
  • entrydate - >日期在您想要的输出列中
  • mytable - >保存数据的表

并且,请在下次提供一些示例条目,并尝试稍微具体一点。

答案 1 :(得分:1)

psuedo code就像

select timestamp ,
       sum(case when hours of timestamp between 6am and 10am then 1 else 0 end) timeframe_count
from yourtable
group by timestamp