文档文档

WHERE 子句

使用 WHERE 子句根据字段值标签值时间戳过滤数据。

语法

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]
  • conditional_expression:两个操作数之间的比较,其结果为 truefalse。比较逻辑由表达式中使用的运算符确定。这些表达式可以作用于 InfluxDB 字段、标签和时间戳。使用逻辑运算符(ANDOR)将多个条件表达式链接在一起。

运算符

运算符评估两个操作数之间的关系并返回 truefalse

比较运算符

运算符含义支持的数据类型
=等于全部
<>不等于全部
!=不等于全部
>大于数值、时间戳
>=大于或等于数值、时间戳
<小于数值、时间戳
<=小于或等于数值、时间戳
=~匹配正则表达式字符串
!~不匹配正则表达式字符串

逻辑运算符

运算符含义
AND如果两个操作数都为 true,则返回 true。否则,返回 false
OR如果任何一个操作数为 true,则返回 true。否则,返回 false

时间范围

使用 WHERE 子句指定要查询的时间范围。如果在 WHERE 子句中未指定时间范围,则使用默认时间范围

时间戳存储在 time 列中。使用比较运算符将 time 列的值与时间戳字面量、整数(Unix 纳秒时间戳)或表达式进行比较。

WHERE
  time >= '2023-01-01T00:00:00Z'
  AND time < '2023-07-01T00:00:00Z'
WHERE
  time >= 1672531200000000000
  AND time < 1688169600000000000
WHERE
  time >= now() - 1d
  AND time < now()

有关如何在 WHERE 子句中指定替代时间范围的信息,请参阅时间语法

正则表达式

正则表达式可用于使用正则表达式比较运算符在 WHERE 子句中评估字符串值。

  • =~:匹配正则表达式
  • !~:不匹配正则表达式
SELECT * FROM home WHERE room =~ /^K/

有关 InfluxQL 正则表达式语法的更多信息,请参阅InfluxQL 正则表达式

WHERE 子句示例

以下示例使用家庭传感器示例数据集

选择具有特定标签值的_数据

选择特定时间范围内的_数据

选择相对时间范围内的_数据

选择高于阈值的字段值

选择特定的字段值

根据算术选择字段值

选择字段值高于阈值且具有特定标签值的数据

根据列之间的关系选择数据

注意事项

单引号和双引号

在 InfluxQL 中,单引号(')和双引号(")的用法不同,并且会影响 WHERE 子句的功能。单引号用于字符串时间戳字面量。双引号用于引用标识符(time、field 和 tag 列名)。

例如,以下条件表达式将 location _列_的值与字符串字面量 London 进行比较。

"location" = 'London'

以下条件表达式将 location _列_的值与 London _列_的值进行比较。

"location" = "London"

WHERE 子句中错误地使用双引号和单引号通常会导致意外的空查询结果。有关引号的更多信息,请参阅InfluxQL 引号

无法查询多个时间范围

InfluxDB 不支持在 WHERE 子句中使用 OR 来查询多个时间范围。例如,以下查询将返回 no results。

SELECT *
FROM home
WHERE
  (time >= '2022-01-01T08:00:00Z' AND time <= '2022-01-01T10:00:00Z')
  OR (time >= '2022-01-01T18:00:00Z' AND time <= '2022-01-01T20:00:00Z')

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2