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

导航到

要了解Flux时间戳,请查看这篇博客

在本周的文章中,我们回顾了InfluxDB时间戳和查询时间范围以及TICK堆栈相关的问题、解决方案、操作指南和问答,这些问题、解决方案、操作指南和问答可能在您过去的一周中有所遗漏,来自GitHub、IRC和InfluxDBGoogle Group

InfluxDB中的时间起点和终点

Q:InfluxDB可以处理的最大时间戳是什么?

A:最大时间戳是 92233720368547758062262-04-11T23:47:16.854775806Z。最小时间戳是 -92233720368547758061677-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 UTCnow()。因此,如果您希望查询包含在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.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版本可在下载页面找到。

配置返回的时间戳

Q:看起来HTTP API返回的是RFC3339格式的时间戳,CLI返回的是纪元纳秒时间戳?是否有方法可以配置这些工具返回的时间戳格式?

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

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

接下来是什么

  • 下载页面上的TICK堆栈现在可供下载
  • 云上部署:使用完全托管集群、Kapacitor和Grafana开始使用InfluxDB Cloud的免费试用。
  • 在您的服务器上部署:想在您的服务器上运行InfluxDB集群吗?尝试免费14天试用InfluxDB企业版,它具有直观的用户界面,可部署、监控和平衡集群,以及管理备份和恢复。
  • 分享您的故事:超过100家公司分享了他们如何通过InfluxDB取得成功的故事。提交您的评价,并作为感谢获得限量版卫衣。