Clickhouse 时区转换

时间:2020-04-06 15:48:47   收藏:0   阅读:546

Clickhouse 时区转换

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

OLAP场景的关键特征

我们知道在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) 

通过上面的例子,大家会发现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还可以获知字段类型,以及该字段对应的时区。

原文:https://www.cnblogs.com/thxj/p/12642041.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!