使用时间类型
时间类型表示时间轴上的一个精确到纳秒的单点。
类型名称: time
时间语法
时间字面量由 RFC3339 时间戳 表示。
YYYY-MM-DD
YYYY-MM-DDT00:00:00Z
YYYY-MM-DDT00:00:00.000Z
将数据类型转换为时间
- 字符串:解析为 RFC3339 时间戳 并转换为时间值。
- 整数:解析为 Unix 纳秒时间戳 并转换为时间值。
- 无符号整数:解析为 Unix 纳秒时间戳 并转换为时间值。
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:00Z | 10000000000 |
2021-01-01T02:00:00Z | 20000000000 |
2021-01-01T03:00:00Z | 30000000000 |
2021-01-01T04:00:00Z | 40000000000 |
上面的示例返回
_time | _value (time) |
---|---|
2021-01-01T00:00:00Z | 1970-01-01T00:00:10Z |
2021-01-01T02:00:00Z | 1970-01-01T00:00:20Z |
2021-01-01T03:00:00Z | 1970-01-01T00:00:30Z |
2021-01-01T04:00:00Z | 1970-01-01T00:00:40Z |
要将任何列转换为时间:
data
|> map(fn: (r) => ({ r with epoch_ns: time(v: r.epoch_ns) }))
给定以下输入数据
_time | epoch_ns (int) |
---|---|
2021-01-01T00:00:00Z | 10000000000 |
2021-01-01T02:00:00Z | 20000000000 |
2021-01-01T03:00:00Z | 30000000000 |
2021-01-01T04:00:00Z | 40000000000 |
上面的示例返回
_time | epoch_ns (time) |
---|---|
2021-01-01T00:00:00Z | 1970-01-01T00:00:10Z |
2021-01-01T02:00:00Z | 1970-01-01T00:00:20Z |
2021-01-01T03:00:00Z | 1970-01-01T00:00:30Z |
2021-01-01T04:00:00Z | 1970-01-01T00:00:40Z |
对时间进行操作
将时间戳截断为指定的单位
当标准化不规则时间戳时,截断时间戳可能很有用。要将时间戳截断为指定的单位
- 导入
date
包。 - 使用
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:33Z | 1.0 |
2021-01-01T00:01:10Z | 1.1 |
2021-01-01T00:02:45Z | 3.6 |
2021-01-01T00:03:23Z | 2.5 |
上面的示例返回
_time | _value |
---|---|
2021-01-01T00:00:00Z | 1.0 |
2021-01-01T00:01:00Z | 1.1 |
2021-01-01T00:02:00Z | 3.6 |
2021-01-01T00:03:00Z | 2.5 |
从时间戳解析时间单位
要从时间值解析特定的时间单位
- 导入
date
包。 - 使用
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
将持续时间添加到时间值
要将 持续时间 添加到时间值
- 导入
date
包。 - 使用
date.add()
将持续时间添加到时间值。
import "date"
date.add(d: 1w, to: 2021-01-01T00:00:00Z)
// Returns 2021-01-08T00:00:00.000000000Z
从时间值中减去持续时间
要从时间值中减去 持续时间
- 导入
date
包。 - 使用
date.sub()
从时间值中减去持续时间。
import "date"
date.sub(d: 1w, from: 2021-01-01T00:00:00Z)
// Returns 2020-12-25T00:00:00.000000000Z
此页面是否对您有帮助?
感谢您的反馈!