InfluxDB從原理到實戰 - 一篇文章搞懂InfluxDB時區

hanj4096發表於2019-11-07

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

相關文章