TL;DR InfluxDB 技术提示 - InfluxDB 时间戳和查询时间范围

导航至

要了解关于 Flux 时间戳的信息,请查看这篇博客

在这篇每周文章中,我们回顾了上周左右您可能错过的来自 GitHub、IRC 和 InfluxDB Google Group 中最有趣的 InfluxDB 时间戳和查询时间范围以及 TICK-stack 相关问题、解决方法、操作指南和问答。

InfluxDB 中时间的开始和结束位置

问:InfluxDB 可以处理的最大时间戳是多少?

答:最大时间戳是 92233720368547758062262-04-11T23:47:16.854775806Z。最小时间戳是 -92233720368547758061677-09-21T00:12:43.145224194Z

如果您的数据点的时间戳超出该时间范围,InfluxDB 将返回一个 解析错误

InfluxDB 的默认查询时间范围

问:当我的查询未在 WHERE 子句中指定时间范围时,InfluxDB 涵盖的时间范围是什么?

例如,InfluxDB 在以下查询中包含哪些数据点?

SELECT max("potato") FROM "tomato"

答:在 InfluxDB 1.0 及更低版本中,查询的默认时间范围介于 1677-09-21 00:12:43.145224194 UTCnow() 之间。因此,如果您希望查询包含时间戳发生在 now() 之后的数据点,则查询必须在 WHERE 子句中提供备选的上限时间边界。例如,查询时间戳介于 1677-09-21 00:12:43.145224194now() 之后 1000 天的数据。

SELECT max("potato") FROM "tomato" WHERE time < now() + 1000d

InfluxDB 1.1+ 版本中的行为略有不同。对于 1.1+ 版本中的大多数 SELECT 语句,默认时间范围介于 1677-09-21 00:12:43.1452241942262-04-11T23:47:16.854775806Z UTC 之间。对于带有 GROUP BY time() 子句SELECT 语句,默认时间范围介于 1677-09-21 00:12:43.145224194 UTC 和 now() 之间。

因此,在 1.1+ 版本中,您不再需要在 WHERE 子句中提供备选的上限时间边界来查询 now() 之后的数据 - 除非您的查询包含 GROUP BY time() 子句。 InfluxDB 1.1.0RC1 版本可在下载页面上获取。

配置返回的时间戳

问:看起来 HTTP API 返回 RFC3339 格式的时间戳,而 CLI 返回 epoch 纳秒时间戳?是否可以配置这些工具返回的时间戳?

答:对于 HTTP API,使用 epoch 查询字符串参数 以您选择的精度接收 epoch 格式的时间戳。在 CLI 中,您可以使用 precision <format> 命令 指定备选的时间戳格式。

有关更多 InfluxDB 提示,请参阅我们的 常见问题解答 页面,并随时在 InfluxDB 用户组 中发布您的问题!

下一步

  • 下载 TICK-stack 的下载页面已上线
  • 云端部署:开始免费试用 InfluxDB Cloud,它具有完全托管的集群、Kapacitor 和 Grafana。
  • 在您的服务器上部署:想在您的服务器上运行 InfluxDB 集群?试用 InfluxDB Enterprise 的 14 天免费试用版,它具有用于部署、监控和重新平衡集群的直观 UI,以及管理备份和恢复的功能。
  • 讲述您的故事:超过 100 家公司 分享了他们关于 InfluxDB 如何帮助他们成功的案例。提交您的客户评价,即可获得限量版连帽衫作为感谢。