select - 在 Influxdb 中按时间查询获取组中的最后一个时间戳

标签 select group-by timestamp influxdb

我在 InfluxDB 中有一个数据库,其中包含以纳秒为单位的价格和时间戳。当我像这样按时间分组进行选择时:

select first(price),last(price) from priceseries where time>=1496815212834974866 and time<=1496865599580302882 group by time(1s)

我收到一个时间列,其中时间戳与组开头的第二个对齐。例如,时间戳为 08:00:00,下一个时间戳为 08:00:01

如何

  1. 对记录时间戳本身应用聚合函数,例如最后(时间)或第一次(时间),以便获得该组的真实第一个和最后一个时间戳(我可以在我的组中拥有许多价格)?
  2. 以及响应中的 time 列如何可能是结束秒而不是开始秒,也就是说,如果该组从 08:00:00 到 08:00:01,我想要在我的 time 列中看到 08:00:01 而不是我现在看到的 08:00:00 ?

最佳答案

  1. 使用聚合函数时不适用,这意味着使用 group by

select first(price), last(price) where time >= <..> and time <= <..>将为您提供该时间窗口内的第一个和最后一个价格。

当查询具有分组依据时,聚合仅适用于间隔内的值。这些值本身是 08:00:00 - 08:00:01 间隔内的实际值,只是显示的时间戳是间隔本身的时间戳,而不是实际值。

这意味着在 08:00:00 和 08:00:01 之间不带分组依据的查询和带有分组依据 time(1s) 的查询同一时期将给出相同的结果。唯一的区别是没有 group by 的查询将具有值的实际时间戳,而 group by 查询将具有间隔的时间戳。

  • 使用group by时的时间戳表示间隔的开始时间。由此,您可以计算出结束时间是开始时间+间隔。要显示的时间戳在查询语言中是不可配置的。
  • 关于select - 在 Influxdb 中按时间查询获取组中的最后一个时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44584071/

    相关文章:

    php - 使用 iso 8601 显示实际时间

    php - MYSQL中如何连接所有三个表?

    Mysql Case 返回错误值

    php - 我必须发布关于使用 PHP 更改的选择选项,但是 JQuery 正在将选择转换为 ul li

    用于获取两个日期中较晚日期的 Mysql 日期函数

    MySQL同时对两个表进行计数

    MySQL View 在 Order by 之后做一个 Group by

    PHP 降序排序无法按预期工作

    python - 从 Python 向 MySQL 插入 unix 时间戳

    php - 将日期(带毫秒)转换为时间戳