MySQL:根据时间戳间隔选择数据

时间:2012-05-19 16:03:22

标签: mysql

我的数据集是一个包含3行的表:硬盘驱动器的ID,空白空间的百分比,时间戳。该表每20分钟附加一个每个HDD的新状态(其中1200个)。

如果我想选择硬盘池的最后一个状态,我会选择MAX(时间戳)和MIN(时间戳),如果我想要最旧的。

但是说我有一个给定的时间戳,我怎么能要求MySQL在这个时间戳周围或多或少的X秒内检索数据呢?

2 个答案:

答案 0 :(得分:1)

WHERE yourTimeStamp 
  between TIMESTAMPADD(SECOND,-3,yourtimestamp) 
      and TIMESTAMPADD(SECOND, 3,yourtimestamp)

其中-3和+ 3代替X

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampadd获得更多帮助。

答案 1 :(得分:1)

像这样:

WHERE timestamp BETWEEN DATE_SUB('<given_timestamp>', INTERVAL 5 SECOND) 
    AND DATE_ADD('<given_timestamp>', INTERVAL 5 SECOND);

正如其他答案中所提到的,当选择基于timestamp字段时,您的查询速度很慢。

您可以在该列上添加INDEX以加快速度:

ALTER TABLE <table_name> ADD INDEX(`timestamp`)

请注意,根据表的大小,第一次添加索引需要一段时间。其次,它会减慢INSERT个查询的速度并增加数据库的大小。这对每个人都不同,所以你必须通过测试找出答案。