间隔之间的mysql和查询

时间:2016-11-04 17:30:38

标签: mysql datetime intervals

我对mysql查询有点奇怪的问题:)

这是我的表:

mysql> describe meteo;

| Field     | Type        | Null | Key | Default | Extra          |

| id        | int(11)     | NO   | PRI | NULL    | auto_increment |

| name      | varchar(32) | NO   |     | NULL    |                |

| date      | datetime    | NO   |     | NULL    |                |

| value     | int(8)      | NO   |     | NULL    |                |

我的目标是:创建一个查询,将所有值从14:00到16:00相加,步进5或10分钟。

我从(14:00到16:00)的N时间做了一些接近解决方案的事情

SELECT sum(value)  FROM meteo WHERE date>='2016-09-9 14:30:00' AND date<='2016-09-9 14:35:00'

SELECT sum(value)  FROM meteo WHERE date>='2016-09-9 14:35:00' AND date<='2016-09-9 14:40:00'

... 等等...

存在执行此操作的查询仅提供间隔范围? 我希望在输出中有这样的东西:

2016-09-9 14:30:00 2016-09-9 14:35:00  176

2016-09-9 14:35:00 2016-09-9 14:40:00  2312

...

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以使用表min_interval

  id begin                 END
  1  2016-09-9 14:30:00    2016-09-9 14:35:00
  2  2016-09-9 14:35:00    2016-09-9 14:40:00
  3  2016-09-9 14:40:00    2016-09-9 14:45:00

你可以查看这篇文章,看看如何生成一天的列表,几分钟内容易更改。

generate days from date range

然后

 SELECT m.begin, m.end, SUM(t.value)
 FROM min_interval m 
 LEFT JOIN meteo t
   ON t.date >= m.begin
  AND t.date < m.end
 GROUP BY m.begin, m.end

答案 1 :(得分:0)

你可以使用mysql date_add()函数:

SELECT sum(value)  FROM meteo WHERE date BETWEEN DATE_ADD(date,INTERVAL 5 MINUTE) AND date

答案 2 :(得分:0)

Select sum(value) from Meteo Where date >= currentDate 13:55 and date <= currentDate 16:10;