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

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。

后记
欢迎交流讨论:
微信公众号:influxdb-dev
InfluxDB技术交流群(QQ):663274123

posted @ 2019-11-07 21:00  hanj4096  阅读(3937)  评论(0编辑  收藏  举报