使用 Flux 操作时间戳
存储在 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 不支持使用 时间类型 值进行数学运算。要计算两个时间戳之间的持续时间
- 使用
uint()
函数将每个时间戳转换为 Unix 纳秒时间戳。 - 从另一个 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 |
一起使用时间戳和持续时间
将持续时间添加到时间戳
date.add()
将持续时间添加到指定时间并返回结果时间。
import "date"
date.add(d: 6h, to: 2019-09-16T12:00:00Z)
// Returns 2019-09-16T18:00:00.000000000Z
从时间戳中减去持续时间
date.sub()
从指定时间中减去持续时间并返回结果时间。
import "date"
date.sub(d: 6h, from: 2019-09-16T12:00:00Z)
// Returns 2019-09-16T06:00:00.000000000Z
向前或向后移动时间戳
timeShift() 函数将指定的时间持续时间添加到时间列(_start
、_stop
、_time
)中的每个值。
向前移动时间
from(bucket: "example-bucket")
|> range(start: -5m)
|> timeShift(duration: 12h)
向后移动时间
from(bucket: "example-bucket")
|> range(start: -5m)
|> timeShift(duration: -12h)
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。