一篇文章搞懂InfluxDB時區

  • 2019 年 11 月 7 日
  • 筆記

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