文档文档

使用 Flux 操作时间戳

存储在 InfluxDB 中的每个点都有关联的时间戳。使用 Flux 处理和操作时间戳以满足您的需求。

如果您刚开始使用 Flux 查询,请查看以下内容

  • Flux 入门,了解 Flux 的概念概述和 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 不支持使用 时间类型 值进行数学运算。要计算两个时间戳之间的持续时间

  1. 使用 uint() 函数将每个时间戳转换为 Unix 纳秒时间戳。
  2. 从另一个 Unix 纳秒时间戳中减去一个 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

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:49Z2.0
2020-01-01T00:01:01Z1.9
2020-01-01T00:03:22Z1.8
2020-01-01T00:04:04Z1.9
2020-01-01T00:05:38Z2.1

输出

_time_value
2020-01-01T00:00:00Z2.0
2020-01-01T00:01:00Z1.9
2020-01-01T00:03:00Z1.8
2020-01-01T00:04:00Z1.9
2020-01-01T00:05:00Z2.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)

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像当前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近期数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看