InfluxDB从原理到实战 - 一篇文章搞懂InfluxDB时区

2022-02-07 00:00:00 子句 时序 时间 转换为 时区

0x00 简介

InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,InfluxDB返回的时间戳对应的是UTC时间。InfluxDB支持通过在tz()子句中指定TZ格式的时区名字,如Asia/Shanghai,将UTC时间转换为中国本地时间,基本语法如下。

SELECT_clause ... tz('<time_zone>')

注意,该time_zone参数遵循Internet分配号码授权机构时区数据库中的TZ语法(https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List),并且需要单引号引用。


0x01 示例

    通过tz()子句将时序数据的时间戳从UTC时间转换为Asia/Shanghai时区的本地时间。

> create database monito

> use monito

Using database monito

>

> insert cpu_usage,host=server01 value=0.67 1572797280000000000

>

> select * from cpu_usage

name: cpu_usage

time                host    value

----                ----    -----

2019-11-03T16:08:00Z server01 0.67

>

> select * from cpu_usage tz('Asia/Shanghai')

name: cpu_usage

time                      host    value

----                      ----    -----

2019-11-04T00:08:00+08:00 server01 0.67

>

>

在示例中,创建数据库monitor,并在数据库monitor中插入一条时间戳为亚洲上海时间2019-11-04T00:08:00Z的时序数据记录,然后使用select命令查询,发现显示的时间戳为UTC时间2019-11-03T16:08:00Z,加上tz('Asia/Shanghai')子句再查询,显示的时间戳为亚洲上海时间2019-11-04T00:08:00+08:00。

相关文章