使用 Flux 操作时间戳
此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档。
InfluxDB 中存储的每个数据点都有关联的时间戳。使用 Flux 处理和操作时间戳以满足您的需求。
转换时间戳格式
Unix 纳秒到 RFC3339
使用 time()
函数将 Unix 纳秒 时间戳转换为 RFC3339 时间戳。
time(v: 1568808000000000000)
// Returns 2019-09-18T12:00:00.000000000Z
RFC3339 到 Unix 纳秒
使用 uint()
函数将 RFC3339 时间戳转换为 Unix 纳秒时间戳。
uint(v: 2019-09-18T12:00:00.000000000Z)
// Returns 1568808000000000000
计算两个时间戳之间的时间间隔
Flux 不支持使用 time 类型 值的数学运算。要计算两个时间戳之间的时间间隔
- 使用
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
Flux 不支持持续时间列类型。要在列中存储持续时间,请使用 string()
函数将持续时间转换为字符串。
检索当前时间
当前 UTC 时间
使用 now()
函数以 RFC3339 格式返回当前 UTC 时间。
now()
now()
在运行时缓存,因此 Flux 脚本中所有 now()
实例都返回相同的值。
当前系统时间
导入 system
包并使用 system.time()
函数以 RFC3339 格式返回主机机器的当前系统时间。
import "system"
system.time()
system.time()
返回执行时的时间,因此 Flux 脚本中每个 system.time()
实例都返回唯一值。
规范化不规则的时间戳
要规范化不规则的时间戳,请使用 truncateTimeColumn()
函数将所有 _time
值截断为指定的单位。这在 join()
和 pivot()
操作中很有用,在这些操作中,点应按时间对齐,但时间戳略有不同。
data
|> truncateTimeColumn(unit: 1m)
输入
_time | _value |
---|---|
2020-01-01T00:00:49Z | 2.0 |
2020-01-01T00:01:01Z | 1.9 |
2020-01-01T00:03:22Z | 1.8 |
2020-01-01T00:04:04Z | 1.9 |
2020-01-01T00:05:38Z | 2.1 |
输出
_time | _value |
---|---|
2020-01-01T00:00:00Z | 2.0 |
2020-01-01T00:01:00Z | 1.9 |
2020-01-01T00:03:00Z | 1.8 |
2020-01-01T00:04:00Z | 1.9 |
2020-01-01T00:05:00Z | 2.1 |
将时间戳和持续时间一起使用
将持续时间添加到时间戳
experimental.addDuration()
函数将持续时间添加到指定时间,并返回结果时间。
通过使用 experimental.addDuration()
,您接受 实验性函数的风险。
import "experimental"
experimental.addDuration(
d: 6h,
to: 2019-09-16T12:00:00Z,
)
// Returns 2019-09-16T18:00:00.000000000Z
从时间戳中减去持续时间
experimental.subDuration()
函数从指定时间减去持续时间,并返回结果时间。
通过使用 experimental.subDuration()
,您接受 实验性函数的风险。
import "experimental"
experimental.subDuration(
d: 6h,
from: 2019-09-16T12:00:00Z,
)
// Returns 2019-09-16T06:00:00.000000000Z
此页面是否对您有帮助?
感谢您的反馈!