TL;DR InfluxDB 技术提示 – Flux 时间戳

导航至

在这篇文章中,我们分享了一些关于如何在 Flux 中使用时间戳的快速示例。

问:Flux 中有哪些时间戳格式可用?

答:有两种时间戳格式可用

Unix 时间戳

Unix 时间戳计算自 Unix 纪元(1970-01-01T00:00:00Z UTC)以来以指定单位的时间。单位由您在将数据写入 InfluxDB 时设置的精度决定。

InfluxDB 支持以下 Unix 时间戳精度

精度 描述 示例
ns 纳秒 1577836800000000000
us 微秒 1577836800000000
ms 毫秒 1577836800000
s 1577836800

以上示例代表 2020-01-01T00:00:00Z UTC

RFC3339 时间戳

RFC3339 时间戳使用 RFC 3339 中提出的人类可读日期时间格式(例如:2020-01-01T00:00:00.00Z)。Flux 和 InfluxDB 客户端返回带有 RFC3339 时间戳的查询结果。

问:如何转换时间戳格式?

答:要将时间戳从 Unix 纳秒转换为人类可读的 RFC3339 时间戳,请使用 time() 函数。

time(v: 1568808000000000000)
// Returns 2019-09-18T12:00:00.000000000Z

要将时间戳从 RFC3339 转换为 Unix 纳秒,请使用 uint() 函数。

uint(v: 2019-09-18T12:00:00.000000000Z)
// Returns 1568808000000000000

问:如何计算两个时间戳之间的持续时间?

答:Flux 不支持使用时间类型值进行数学运算。要计算两个时间戳之间的持续时间

  1. 使用 uint() 函数将每个时间戳转换为 Unix 纳秒时间戳。
  2. 从另一个 Unix 纳秒时间戳中减去一个。
  3. 使用 duration() 函数将结果转换为持续时间。
time1 = uint(v: 2019-09-17T21:12:05Z)
time2 = uint(v: 2019-09-18T22:16:35Z)

duration(v: time2 - time1)
// Returns 25h4m30s

问:如何检索当前时间?

答:要检索 UTC 当前时间,请使用 now() 函数。请注意,now() 函数在运行时被缓存,因此所有 now() 实例都返回相同的值。

now()

要检索主机系统的当前系统时间(RFC3339 格式),请导入 system 包和 system.time() 函数

import "system"

system.time()