问题提出
因为公司是全球业务,数据按照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,也就是说中间差了一个小时。具体如下图,那么到底问题处在哪里呢?
解决办法
按照如下设置解决:
SET time_zone = Etc/UTC
原因是Europe/London时区的DST时间为+01:00导致的:
具体时区列表参照:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
STD和DST含义:
STD:标准时间,
DST:夏令时