TL;DR InfluxDB 技术提示 - InfluxDB 时间戳和查询时间范围
作者:Regan Kuchan / 开发者
2016 年 11 月 10 日
导航至
要了解关于 Flux 时间戳的信息,请查看这篇博客。
在这篇每周文章中,我们回顾了上周左右您可能错过的来自 GitHub、IRC 和 InfluxDB Google Group 中最有趣的 InfluxDB 时间戳和查询时间范围以及 TICK-stack 相关问题、解决方法、操作指南和问答。
InfluxDB 中时间的开始和结束位置
问:InfluxDB 可以处理的最大时间戳是多少?
答:最大时间戳是 9223372036854775806
或 2262-04-11T23:47:16.854775806Z
。最小时间戳是 -9223372036854775806
或 1677-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
UTC 和 now()
之间。因此,如果您希望查询包含时间戳发生在 now()
之后的数据点,则查询必须在 WHERE
子句中提供备选的上限时间边界。例如,查询时间戳介于 1677-09-21 00:12:43.145224194
和 now()
之后 1000 天的数据。
SELECT max("potato") FROM "tomato" WHERE time < now() + 1000d
InfluxDB 1.1+ 版本中的行为略有不同。对于 1.1+ 版本中的大多数 SELECT
语句,默认时间范围介于 1677-09-21 00:12:43.145224194
和 2262-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 如何帮助他们成功的案例。提交您的客户评价,即可获得限量版连帽衫作为感谢。