在MySql中,如何在最后一小时内每60个条目拉一次

时间:2014-01-21 02:04:43

标签: mysql date select where intervals

我编写了一个硬件监视器,每隔一秒就将选择数据保存到一个mysql数据库,我意识到这是太过分了,我的bose每隔100秒钟就想要它,而我每隔10秒就想要它,这就是妥协。对于这样的非规范化数据库,它的索引和搜索速度比我预期的要快得多。好吧,这就是问题所在。我想在过去一小时内每隔60秒检索一次数据。我可以每60秒查询一次,或者我可以查询最后一小时,但我不能在最后一小时内每隔60秒查询一次。

`SELECT Date, Private, Private 2
 FROM Hardware1
 WHERE Date %60 =1
 ORDER BY Date ASC";`

每隔60秒就能得到我的结果,但是他们奇怪地分手了

| 2014-01-20 17:40:21 | 0.336 |     632 |
| 2014-01-20 17:41:41 | 0.336 |     632 |
| 2014-01-20 17:42:01 | 0.336 |     632 |
| 2014-01-20 17:43:21 | 0.336 |     634 |
| 2014-01-20 17:44:41 | 0.336 |     634 |
| 2014-01-20 17:45:01 | 0.336 |     634 |
| 2014-01-20 17:46:21 | 0.336 |     634 |
| 2014-01-20 17:47:41 | 0.336 |     634 |
+---------------------+-------+---------+

然后我

`SELECT Date, Private, Private2 
 FROM Miner1 
 WHERE Date >= DATE_SUB(NOW(),INTERVAL 1 HOUR)`

其中显示了过去一小时内每秒的数据

| 2014-01-20 17:49:12 | 0.336 |     634 | 
| 2014-01-20 17:49:13 | 0.336 |     634 |
| 2014-01-20 17:49:14 | 0.336 |     634 |
| 2014-01-20 17:49:15 | 0.336 |     634 |
| 2014-01-20 17:49:16 | 0.336 |     634 |
| 2014-01-20 17:49:17 | 0.336 |     634 |
| 2014-01-20 17:49:18 | 0.336 |     634 |
| 2014-01-20 17:49:19 | 0.336 |     634 |
| 2014-01-20 17:49:20 | 0.336 |     634 |
+---------------------+-------+---------+

帮助请我尝试了很多不同的事情,并且遇到了一个令人头疼的问题

1 个答案:

答案 0 :(得分:1)

从最后一小时返回所有秒数的查询是一个良好的开端:

SELECT Date, Private, Private2 
FROM Miner1 
WHERE Date >= DATE_SUB(NOW(),INTERVAL 1 HOUR) and
      second(Date) = 0;