文档文档

使用时间类型

时间类型表示时间轴上的一个精确到纳秒的单点。

类型名称: time

时间语法

时间字面量由 RFC3339 时间戳 表示。

YYYY-MM-DD
YYYY-MM-DDT00:00:00Z
YYYY-MM-DDT00:00:00.000Z

将数据类型转换为时间

使用 time() 函数 将以下 基本类型 转换为时间

time(v: "2021-01-01")
// Returns 2021-01-01T00:00:00.000000000Z

time(v: 1609459200000000000)
// Returns 2021-01-01T00:00:00.000000000Z

time(v: uint(v: 1609459200000000000))
// Returns 2021-01-01T00:00:00.000000000Z

将列转换为时间

Flux 允许您在 表流 中迭代行并将列转换为时间。

要将 _value 列转换为时间,请使用 toTime() 函数

toTime() 仅对 _value 列进行操作。

data
    |> toTime()
给定以下输入数据
_time_value (int)
2021-01-01T00:00:00Z10000000000
2021-01-01T02:00:00Z20000000000
2021-01-01T03:00:00Z30000000000
2021-01-01T04:00:00Z40000000000
上面的示例返回
_time_value (time)
2021-01-01T00:00:00Z1970-01-01T00:00:10Z
2021-01-01T02:00:00Z1970-01-01T00:00:20Z
2021-01-01T03:00:00Z1970-01-01T00:00:30Z
2021-01-01T04:00:00Z1970-01-01T00:00:40Z

要将任何列转换为时间:

  1. 使用 map() 迭代并重写行。
  2. 使用 time() 将列值转换为时间。
data
    |> map(fn: (r) => ({ r with epoch_ns: time(v: r.epoch_ns) }))
给定以下输入数据
_timeepoch_ns (int)
2021-01-01T00:00:00Z10000000000
2021-01-01T02:00:00Z20000000000
2021-01-01T03:00:00Z30000000000
2021-01-01T04:00:00Z40000000000
上面的示例返回
_timeepoch_ns (time)
2021-01-01T00:00:00Z1970-01-01T00:00:10Z
2021-01-01T02:00:00Z1970-01-01T00:00:20Z
2021-01-01T03:00:00Z1970-01-01T00:00:30Z
2021-01-01T04:00:00Z1970-01-01T00:00:40Z

对时间进行操作

将时间戳截断为指定的单位

当标准化不规则时间戳时,截断时间戳可能很有用。要将时间戳截断为指定的单位

  1. 导入 date
  2. 使用 date.truncate(),并提供要截断到的时间单位。

截断到周

当将时间值截断到周 (1w) 时,周是使用 Unix 纪元(1970-01-01T00:00:00Z UTC) 确定的。Unix 纪元是在星期四,因此所有计算的周都从星期四开始。

t0 = 2021-01-08T14:54:10.023849Z

date.truncate(t: t0, unit: 1ms)
// Returns 2021-01-08T14:54:10.023000000Z

date.truncate(t: t0, unit: 1m)
// Returns 2021-01-08T14:54:00.000000000Z

date.truncate(t: t0, unit: 1w)
// Returns 2021-01-07T00:00:00.000000000Z

date.truncate(t: t0, unit: 1mo)
// Returns 2021-01-01T00:00:00.000000000Z

要截断 _time 列,请使用 truncateTimeColumn():

data
    |> truncateTimeColumn(unit: 1m)
给定以下输入数据
_time_value
2021-01-01T00:00:33Z1.0
2021-01-01T00:01:10Z1.1
2021-01-01T00:02:45Z3.6
2021-01-01T00:03:23Z2.5
上面的示例返回
_time_value
2021-01-01T00:00:00Z1.0
2021-01-01T00:01:00Z1.1
2021-01-01T00:02:00Z3.6
2021-01-01T00:03:00Z2.5

从时间戳解析时间单位

要从时间值解析特定的时间单位

  1. 导入 date
  2. 使用 date 包中的函数从时间戳返回特定的时间单位。
import "date"

t0 = 2021-01-08T14:54:10.023849Z

date.minute(t: t0)
// Returns 54

date.year(t: t0)
// Returns 2021

date.quarter(t: t0)
// Returns 1

将持续时间添加到时间值

要将 持续时间 添加到时间值

  1. 导入 date
  2. 使用 date.add() 将持续时间添加到时间值。
import "date"

date.add(d: 1w, to: 2021-01-01T00:00:00Z)
// Returns 2021-01-08T00:00:00.000000000Z

从时间值中减去持续时间

要从时间值中减去 持续时间

  1. 导入 date
  2. 使用 date.sub() 从时间值中减去持续时间。
import "date"

date.sub(d: 1w, from: 2021-01-01T00:00:00Z)
// Returns 2020-12-25T00:00:00.000000000Z

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看