Clickhouse 時區轉換


Clickhouse 時區轉換

ClickHouse是一個用於聯機分析(OLAP)的列式數據庫管理系統(DBMS)。

OLAP場景的關鍵特征

  • 大多數是讀請求
  • 數據總是以相當大的批(> 1000 rows)進行寫入
  • 不修改已添加的數據
  • 每次查詢都從數據庫中讀取大量的行,但是同時又僅需要少量的列
  • 寬表,即每個表包含着大量的列
  • 較少的查詢(通常每台服務器每秒數百個查詢或更少)
  • 對於簡單查詢,允許延遲大約50毫秒
  • 列中的數據相對較小: 數字和短字符串(例如,每個URL 60個字節)
  • 處理單個查詢時需要高吞吐量(每個服務器每秒高達數十億行)
  • 事務不是必須的
  • 對數據一致性要求低
  • 每一個查詢除了一個大表外都很小
  • 查詢結果明顯小於源數據,換句話說,數據被過濾或聚合后能夠被盛放在單台服務器的內存中

我們知道在mysql 進行時間的時區轉換,可以通過 CONVERT_TZ(dt,from_tz,to_tz),其中dt 是datetime 數據類型;從from_tz 時區轉換為to_tz時區,from_tz 可以是任何時區,其中數據庫默認時區是UTC

1 /*Mysql從UTC 時區轉換成 香港時區(+08:00)*/

SELECT  CONVERT_TZ('2020-04-06 02:00:00','UTC','Asia/Hong_Kong') as DateTime
2020-04-06 10:00:00

2 /*Mysql從 香港時區轉換美國紐約時區 */

SELECT  CONVERT_TZ('2020-04-06 02:00:00','Asia/Hong_Kong','America/New_York') as DateTime
2020-04-05 14:00:00

 

Clickhoue 的from_tz 是默認系統時區,比如UTC 是系統的時區:

Select toString(toDateTime('2020-04-06 02:00:00'), 'Asia/Hong_Kong') AS time_Hong_Kong
2020-04-06 10:00:00

Clickhouse 如果系統默認時間是跟from_tz 時區是一樣的,可以不寫

select toTimeZone(toDateTime('2020-04-06 02:00:00', 'UTC'), 'Asia/Hong_Kong')  ,
       toString(toDateTime('2020-04-06 02:00:00','UTC'), 'Asia/Hong_Kong')  ,
       toTimeZone(toDateTime('2020-04-06 02:00:00'), 'Asia/Hong_Kong')  ,/*系統默認時間是UTC時區,可以不用寫UTC 時間*/
       toString(toDateTime('2020-04-06 02:00:00'), 'Asia/Hong_Kong')  ,/*系統默認時間是UTC時區,可以不用寫UTC 時間*/
       toTimeZone(toDateTime('2020-04-06 02:00:00', 'America/New_York'), 'Asia/Hong_Kong') /*其中2020-04-06 02:00:00 所屬時區是America/New_York*/

通過上面的例子,大家會發現toTimeZone,與toString 的功能很像,其實我們通過toTypeName這個函數就可以知道它們的區別

select toTypeName(toTimeZone(toDateTime('2020-04-06 02:00:00', 'UTC'), 'Asia/Hong_Kong'))   ,
       toTypeName(toString(toDateTime('2020-04-06 02:00:00','UTC'), 'Asia/Hong_Kong'))  ,
       toTypeName(formatDateTime(toTimeZone(toDateTime('2020-04-06 02:00:00', 'UTC'), 'Asia/Hong_Kong'),'%F %T')) ;

嘻嘻,運行一下上面的代碼,你就會知道了。
toTimeZone函數還是比較強大,通過可以實現時區轉換,通過toTypeName還可以獲知字段類型,以及該字段對應的時區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM