配置时区
本主题介绍如何配置时区以及时区设置的影响。
配置会话级别时区或全局时区
您可以使用 time_zone
参数为 StarRocks 集群配置会话级别时区或全局时区。
- 要配置会话级别时区,请执行命令
SET time_zone = 'xxx';
。您可以为不同的会话配置不同的时区。如果您与 FE 断开连接,则时区设置将失效。 - 要配置全局时区,请执行命令
SET global time_zone = 'xxx';
。时区设置将持久保存在 FE 中,即使您与 FE 断开连接也有效。
注意
在将数据加载到 StarRocks 之前,请将 StarRocks 集群的全局时区修改为与
system_time_zone
参数相同的值。否则,加载数据后,DATE 类型的数据将不正确。system_time_zone
参数指的是用于托管 FE 的机器的时区。启动机器时,机器的时区将记录为此参数的值。您无法手动配置此参数。
时区格式
time_zone
参数的值不区分大小写。参数的值可以是以下格式之一。
格式 | 示例 |
---|---|
UTC 偏移量 | SET time_zone = '+10:00'; SET global time_zone = '-6:00'; |
时区名称 | SET time_zone = 'Asia/Shanghai'; SET global time_zone = 'America/Los_Angeles'; |
有关时区格式的更多信息,请参见 时区数据库时区列表。
注意
除了 CST 之外,不支持时区缩写。如果您将
time_zone
的值设置为CST
,则 StarRocks 会将CST
转换为Asia/Shanghai
。
默认时区
time_zone
参数的默认值为 Asia/Shanghai
。
查看时区设置
要查看时区设置,请运行以下命令。
SHOW VARIABLES LIKE '%time_zone%';
时区设置的影响
- 时区设置会影响 SHOW LOAD 和 SHOW BACKENDS 语句返回的时间值。但是,当 CREATE TABLE 语句中指定的分区列的类型为 DATE 或 DATETIME 时,这些设置不会影响
LESS THAN
子句中指定的值。这些设置也不会影响 DATE 和 DATETIME 类型的数据。 - 时区设置会影响以下函数的显示和存储
- from_unixtime: 根据指定的 UTC 时间戳返回您指定的时区的日期和时间。例如,如果 StarRocks 集群的全局时区为
Asia/Shanghai
,则select FROM_UNIXTIME(0);
返回1970-01-01 08:00:00
。 - unix_timestamp: 根据您指定的时区的日期和时间返回 UTC 时间戳。例如,如果 StarRocks 集群的全局时区为
Asia/Shanghai
,则select UNIX_TIMESTAMP('1970-01-01 08:00:00');
返回0
。 - curtime: 返回您指定的时区的当前时间。例如,如果指定的时区的当前时间为 16:34:05,则
select CURTIME();
返回16:34:05
。 - now: 返回您指定的时区的当前日期和时间。例如,如果指定的时区的当前日期和时间为 2021-02-11 16:34:13,则
select NOW();
返回2021-02-11 16:34:13
。 - convert_tz: 将日期和时间从一个时区转换为另一个时区。例如,
select CONVERT_TZ('2021-08-01 11:11:11', 'Asia/Shanghai', 'America/Los_Angeles');
返回2021-07-31 20:11:11
。
- from_unixtime: 根据指定的 UTC 时间戳返回您指定的时区的日期和时间。例如,如果 StarRocks 集群的全局时区为