一篇文章搞懂InfluxDB时区

2019-11-07 13:02:44 浏览数 (1)

0x00 简介

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

代码语言:javascript复制
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时区的本地时间。

代码语言:javascript复制
> 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。

后记

欢迎交流讨论:

微信公众号:influxdb-dev

InfluxDB技术交流群(QQ):663274123

0 人点赞