文档文档

使用 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 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看