TL;DR InfluxDB技术技巧 Flux时间戳
作者:Nora Mullen / 用例,开发者,产品
2020年6月11日
导航至
在这篇文章中,我们分享了一些关于如何在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不支持使用时间类型值进行数学运算。要计算两个时间戳之间的持续时间
- 使用uint()函数将每个时间戳转换为Unix纳秒时间戳。
- 从另一个Unix纳秒时间戳中减去。
- 使用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.time()
函数。
import "system"
system.time()