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 包和 system.time() 函数
import "system"
system.time()