如何使用InfluxQL的时间语法 您所在的位置:网站首页 SAS时间戳展示时提前一分钟 如何使用InfluxQL的时间语法

如何使用InfluxQL的时间语法

2023-11-11 17:21| 来源: 网络整理| 查看: 265

对于大多数SELECT语句,默认的时间范围是从1677-09-21 00:12:43.145224194 UTC到2262-04-11T23:47:16.854775806Z UTC。对于包含GROUP BY time()子句的SELECT语句,默认的时间范围是从1677-09-21 00:12:43.145224194 UTC到now()。以下章节将详细介绍如何在SELECT语句的WHERE子句中指定其它的时间范围。

绝对时间

使用日期-时间字符串(date-time string)和epoch时间来指定绝对时间。

语法

SELECT_clause FROM_clause WHERE time ['' | '' | ] [AND ['' | '' | ] [...]]

语法描述

支持的操作符如下表所示。

=

等于

不等于

!=

不等于

>

大于

>=

大于或等于

= '2015-08-18T00:00:00.000000000Z' AND time SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2015-08-18' AND time SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= 1439856000000000000 AND time SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= 1439856000s AND time SELECT "water_level" FROM "h2o_feet" WHERE time > '2015-09-18T21:24:00Z' + 6m name: h2o_feet time water_level ---- ----------- 2015-09-18T21:36:00Z 5.066 2015-09-18T21:42:00Z 4.938

该查询返回时间戳在2015年8月18日21:24:00后6分钟之后的数据,即在2015年8月18日21:30:00之后的数据。请注意,需要用空格分别将时间戳和+、+和6m隔开。

对epoch格式的时间戳进行基本运算

> SELECT "water_level" FROM "h2o_feet" WHERE time > 24043524m - 6m name: h2o_feet time water_level ---- ----------- 2015-09-18T21:24:00Z 5.013 2015-09-18T21:30:00Z 5.01 2015-09-18T21:36:00Z 5.066 2015-09-18T21:42:00Z 4.938

该查询返回时间戳在2015年8月18日21:24:00前6分钟之后的数据,即在2015年8月18日21:18:00之后的数据。请注意,需要用空格分别将时间戳和-、-和6m隔开。

相对时间

使用now()查询时间戳相对于服务器本地时间戳的数据。

语法

SELECT_clause FROM_clause WHERE time now() [[ - | + ] ] [(AND|OR) now() [...]]

语法描述

now()是在服务器上执行查询时该服务器的Unix时间。-或+和duration_literal之间必须要用空格隔开。

支持的操作符如下表所示。

=

等于

不等于

!=

不等于

>

大于

>=

大于或等于

now() - 1h

该查询返回过去一个小时内的数据。需要用空格分别将now()和-、-和1h隔开。

用绝对时间和相对时间指定时间范围

> SELECT "level description" FROM "h2o_feet" WHERE time > '2015-09-18T21:18:00Z' AND time < now() + 1000d name: h2o_feet time level description ---- ----------------- 2015-09-18T21:24:00Z between 3 and 6 feet 2015-09-18T21:30:00Z between 3 and 6 feet 2015-09-18T21:36:00Z between 3 and 6 feet 2015-09-18T21:42:00Z between 3 and 6 feet

该查询返回时间戳在2015年9月18日21:18:00和now()之后的1000天之间的数据。需要用空格分别将now()和+、+和1000d隔开。

时间语法的常见问题

使用OR选择多个时间间隔

TSDB For InfluxDB®不支持在WHERE子句中使用OR来指定多个时间间隔。若想获得更多相关信息,请查阅FAQ相关章节。

在带有GROUP BY time()的查询语句中,查询发生在now()之后的数据

对于大多数SELECT语句,默认的时间范围是从1677-09-21 00:12:43.145224194 UTC到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子句中提供一个时间上限(upper bound)。

示例

使用CLI向数据库NOAA_water_database中写入一个发生在now()之后的数据点:

> INSERT h2o_feet,location=santa_monica water_level=3.1 1587074400000000000

运行一个带有GROUP BY time()的查询,涵盖时间戳在2015-09-18T21:30:00Z和now()之后的180个星期之间的数据:

> SELECT MEAN("water_level") FROM "h2o_feet" WHERE "location"='santa_monica' AND time >= '2015-09-18T21:30:00Z' AND time SELECT MEAN("water_level") FROM "h2o_feet" WHERE "location"='santa_monica' AND time >= now() GROUP BY time(12m) fill(none) >

配置返回的时间戳

CLI默认返回epoch格式的时间戳,并且精确到纳秒,可通过命令precision 来指定其它的时间格式。HTTP API默认返回RFC3339格式的时间戳,可通过参数epoch来指定其它的时间格式。

InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有