文档文档

使用 Flux 操作时间戳

此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档

存储在 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 不支持使用 time 类型 值进行数学运算。要计算两个时间戳之间的持续时间

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

一起使用时间戳和持续时间

将持续时间添加到时间戳

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

此页对您有帮助吗?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看