Doris时区设置

问题提出
因为公司是全球业务,数据按照UTC时区存储数据,那么如何将Doris时区设置为UTC时区?
发现通过set global time_zone = ‘+0:00’;时区并不是UTC。

##时区设置
mysql> set  global time_zone = '+0:00';
##时区查看
mysql> show variables like '%time_zone%';
+------------------+---------------+
| Variable_name    | Value         |
+------------------+---------------+
| system_time_zone | Europe/London |
| time_zone        | Europe/London |
+------------------+---------------+
##当前时间查看
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2022-05-24 15:05:35 |
+---------------------+

因为当前时间为22:09:23,所以我实际上预期的时间是2022-05-24 14:09:23,也就是说中间差了一个小时。

具体操作

  1. show variables like '%time_zone%'

    查看当前时区相关配置

  2. SET time_zone = 'Asia/Shanghai'

    该命令可以设置session级别的时区,连接断开后失效

  3. SET global time_zone = 'Asia/Shanghai'

    该命令可以设置global级别的时区参数,fe会将参数持久化,连接断开后不失效

时区的影响

时区设置会影响对时区敏感的时间值的显示和存储。

包括NOW()或CURTIME()等时间函数显示的值,也包括show load, show backends中的时间值。

但不会影响 create table 中时间类型分区列的 less than 值,也不会影响存储为 date/datetime 类型的值的显示。

受时区影响的函数:

  • FROM_UNIXTIME:给定一个 UTC 时间戳,返回指定时区的日期时间:如 FROM_UNIXTIME(0), 返回 CST 时区:1970-01-01 08:00:00
  • UNIX_TIMESTAMP:给定一个指定时区日期时间,返回 UTC 时间戳:如 CST 时区 UNIX_TIMESTAMP('1970-01-01 08:00:00'),返回 0
  • CURTIME:返回指定时区时间。
  • NOW:返指定地时区日期时间。
  • CONVERT_TZ:将一个日期时间从一个指定时区转换到另一个指定时区。

使用限制

时区值可以使用几种格式给出,不区分大小写:

  • 表示UTC偏移量的字符串,如'+10:00'或'-6:00'
  • 标准时区格式,如"Asia/Shanghai"、"America/Los_Angeles"
  • 不支持缩写时区格式,如"MET"、"CTT"。因为缩写时区在不同场景下存在歧义,不建议使用。
  • 为了兼容Doris,支持CST缩写时区,内部会将CST转移为"Asia/Shanghai"的中国标准时区
  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值