TL;DR InfluxDB技术技巧 - InfluxDB时间戳和查询时间范围
作者:Regan Kuchan / 开发者
2016年11月10日
导航到
要了解Flux时间戳,请查看这篇博客。
在本周的文章中,我们回顾了InfluxDB时间戳和查询时间范围以及TICK堆栈相关的问题、解决方案、操作指南和问答,这些问题、解决方案、操作指南和问答可能在您过去的一周中有所遗漏,来自GitHub、IRC和InfluxDBGoogle Group。
InfluxDB中的时间起点和终点
Q:InfluxDB可以处理的最大时间戳是什么?
A:最大时间戳是 9223372036854775806
或 2262-04-11T23:47:16.854775806Z
。最小时间戳是 -9223372036854775806
或 1677-09-21T00:12:43.145224194Z
。
InfluxDB如果您的点的时间戳超出该时间范围,将返回一个 解析错误。
InfluxDB的默认查询时间范围
Q:当我在WHERE
子句中未指定时间范围时,InfluxDB涵盖了哪个时间范围?
例如,在以下查询中,InfluxDB包含哪些点?
SELECT max("potato") FROM "tomato"
A:在InfluxDB 1.0及以下版本中,查询的默认时间范围是从1677-09-21 00:12:43.145224194
UTC到now()
。因此,如果您希望查询包含在now()
之后发生的时间戳的点,查询必须在WHERE
子句中提供替代的上限时间范围。例如,查询时间戳在1677-09-21 00:12:43.145224194
和1000天后now()
之间的数据
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版本可在下载页面找到。
配置返回的时间戳
Q:看起来HTTP API返回的是RFC3339格式的时间戳,CLI返回的是纪元纳秒时间戳?是否有方法可以配置这些工具返回的时间戳格式?
A:使用HTTP API,使用epoch
查询字符串参数以您选择的精度接收纪元格式的时间戳。在CLI中,您可以使用precision <format>
命令指定替代的时间戳格式。
有关更多InfluxDB技巧,请参阅我们的常见问题解答页面,并在InfluxDB用户组中随时提问!
接下来是什么
- 下载页面上的TICK堆栈现在可供下载
- 云上部署:使用完全托管集群、Kapacitor和Grafana开始使用InfluxDB Cloud的免费试用。
- 在您的服务器上部署:想在您的服务器上运行InfluxDB集群吗?尝试免费14天试用InfluxDB企业版,它具有直观的用户界面,可部署、监控和平衡集群,以及管理备份和恢复。
- 分享您的故事:超过100家公司分享了他们如何通过InfluxDB取得成功的故事。提交您的评价,并作为感谢获得限量版卫衣。