时间和时区查询
InfluxQL 专为处理时间序列数据而设计,并包含专门用于处理时间的功能。您可以查看以下在 InfluxQL 查询中使用时间和时间戳的方法
配置返回的时间戳
InfluxQL shell 默认以纳秒 UNIX 纪元格式返回时间戳。使用 precision <format>
命令 指定其他格式。
如果您正在使用 InfluxQL shell,请使用精度辅助命令 precision rfc3339
以人类可读的格式查看结果。
InfluxDB API 默认以 RFC3339 格式返回时间戳。使用 epoch
查询字符串参数 指定其他格式。
时间语法
对于大多数 SELECT
语句,默认时间范围介于 1677-09-21 00:12:43.145224194
和 2262-04-11T23:47:16.854775806Z
UTC 之间。对于带有 GROUP BY time()
子句 的 SELECT
语句,默认时间范围介于 1677-09-21 00:12:43.145224194
UTC 和 now()
之间。以下部分详细介绍了如何在 SELECT
语句的 WHERE
子句 中指定其他时间范围。
绝对时间
使用日期时间字符串和纪元时间指定绝对时间。
语法
SELECT_clause FROM_clause WHERE time <operator> ['<rfc3339_date_time_string>' | '<rfc3339_like_date_time_string>' | <epoch_time>] [AND ['<rfc3339_date_time_string>' | '<rfc3339_like_date_time_string>' | <epoch_time>] [...]]
支持的运算符
运算符 | 含义 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
目前,InfluxDB 不支持在 WHERE
子句中使用带有绝对时间的 OR
。有关更多信息,请参阅 常见问题解答 文档和 GitHub Issue。
rfc3339_date_time_string
'YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ'
.nnnnnnnnn
是可选的,如果未包含,则设置为 .000000000
。RFC3339 日期时间字符串需要单引号。
rfc3339_like_date_time_string
'YYYY-MM-DD HH:MM:SS.nnnnnnnnn'
HH:MM:SS.nnnnnnnnn.nnnnnnnnn
是可选的,如果未包含,则设置为 00:00:00.000000000
。类似 RFC3339 的日期时间字符串需要单引号。
epoch_time
纪元时间是自 1970 年 1 月 1 日星期四协调世界时 (UTC) 00:00:00 以来经过的时间量。
默认情况下,InfluxDB 假定所有纪元时间戳都以纳秒为单位。在纪元时间戳的末尾包含一个 持续时间文字,以指示纳秒以外的精度。
基本算术
所有时间戳格式都支持基本算术。使用 持续时间文字 从时间戳中添加 (+
) 或减去 (-
) 时间。请注意,InfluxQL 要求在 +
或 -
与持续时间文字之间有一个空格。
示例
相对时间
语法
SELECT_clause FROM_clause WHERE time <operator> now() [[ - | + ] <duration_literal>] [(AND|OR) now() [...]]
now()
是服务器在服务器上执行查询时的 Unix 时间。-
或 +
与 持续时间文字 之间的空格是必需的。
支持的运算符
运算符 | 含义 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
duration_literal
- 微秒:
u
或µ
- 毫秒:
ms
- 秒
s
- 分钟
m
- 小时:
h
- 天:
d
- 周:
w
示例
时区子句
使用 tz()
子句返回指定时区的 UTC 偏移量。
语法
SELECT_clause FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause] tz('<time_zone>')
默认情况下,InfluxDB 以 UTC 格式存储和返回时间戳。tz()
子句在查询返回的时间戳中包含 UTC 偏移量,或者如果适用,则包含 UTC 夏令时 (DST) 偏移量。返回的时间戳必须采用 RFC3339
格式,才能显示 UTC 偏移量或 UTC DST。time_zone
参数遵循 互联网号码分配机构时区数据库 中的 TZ 语法,并且需要单引号。
示例
时间语法的常见问题
使用 OR
选择多个时间间隔
InfluxDB 不支持在 WHERE
子句中使用 OR
运算符来指定多个时间间隔。
有关更多信息,请参阅 常见问题解答。
使用 GROUP BY time()
子句查询 now()
之后发生的数据
大多数 SELECT
语句的默认时间范围介于 1677-09-21 00:12:43.145224194
和 2262-04-11T23:47:16.854775806Z
UTC 之间。对于带有 GROUP BY time()
子句 的 SELECT
语句,默认时间范围介于 1677-09-21 00:12:43.145224194
UTC 和 now()
之间。
要查询时间戳发生在 now()
之后的数据,带有 GROUP BY time()
子句的 SELECT
语句必须在 WHERE
子句中提供备用上限。
此页面是否对您有帮助?
感谢您的反馈!