时区
更新时间:2021-08-20
Doris 支持多时区设置
Doris 内部存在多个时区相关 变量
system_time_zone
: 当服务器启动时,会根据机器设置时区自动设置,设置后不可修改。time_zone
: 服务器当前时区,区分session级别和global级别
具体操作
-
show variables like '%time_zone%'
查看当前时区相关配置。
-
SET time_zone = 'Asia/Shanghai'
该命令可以设置session级别的时区,连接断开后失效。
-
SET global time_zone = 'Asia/Shanghai'
该命令可以设置global级别的时区参数,连接断开后不失效。
时区的影响
时区设置会影响对时区敏感的时间值的显示和存储。
包括 NOW 或 CURTIME 等时间函数显示的值,也包括 SHOW LOAD,SHOW BACKENDS 中的时间值。
但不会影响 CREATE TABLE 中时间类型分区列的值,也不会影响存储为 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"的中国标准时区
时区格式列表
可以参阅这里获取各个时区的书写方式:List of tz database time zones