• 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还可以获知字段类型,以及该字段对应的时区。

  • 相关阅读:
    luogu P3704 [SDOI2017]数字表格
    「雅礼集训 2018 Day4」Magic(分治NTT)
    「清华集训 2017」小 Y 和恐怖的奴隶主
    [WC2019]数树(树形dp+多项式exp)
    「FJWC2020Day5-zzq」lg (容斥)
    BoundedOptimization TopCoder
    MapGuessing TopCoder
    线性递推(Berlekamp-Massey 算法)
    杜教筛小记
    「余姚中学 2019 联测 Day 6」解码
  • 原文地址:https://www.cnblogs.com/thxj/p/12642041.html
Copyright © 2020-2023  润新知