timezone
值(默认为粗体)
UTC,时区
语法
SET timezone { TO | = } [ time_zone | DEFAULT ] SET time zone [ time_zone | DEFAULT ]
描述
设置当前会话的时区。时区可以为协调世界时间 (UTC) 或时区名称的偏移。
注意
您不能使用集群参数组设置 timezone
配置参数。使用 SET 命令只能为当前会话设置时区。要为某个特定数据库用户运行的所有会话设置时区,请使用 ALTER USER 命令。ALTER USER … SET TIMEZONE 将更改后续会话的时区,而不是更改当前会话的时区。
在使用带有 TO
或 =
的 SET timezone
(一个词) 命令时,您可以将 time_zone 指定为时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移,如下所示。
SET timezone { TO | = } time_zone
在使用有关此行为的更多信息,请参阅没有 TO
或 =
的 SET time zone 命令时,您可以使用 INTERVAL 指定 time_zone,同时还能指定时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移,如下所示。
SET time zone time_zone
时区格式
Amazon Redshift 支持以下时区格式:
-
时区名称
-
INTERVAL
-
POSIX 式时区规格
-
ISO-8601 偏移
由于时区缩写,例如 PST 或 PDT,定义为从 UTC 的固定偏移,并且不包括夏令时时间规则,所以 SET 命令不支持时区缩写。
有关时区格式的详细信息,请参阅以下内容。
时区名称 – 完整时区名称,如 America/New_York。完整时区名称可以包含夏令时规则。
以下是完整时区名称的示例:
-
Etc/Greenwich
-
America/New_York
-
CST6CDT
-
GB
注意
许多时区名称,例如 EST、MST、NZ 和 UCT,也是缩写。
要查看有效时区名称的列表,请运行以下命令。
select pg_timezone_names();
INTERVAL – UTC 的偏移。例如,PST 是 –8:00 或 –8 小时。
以下是 INTERVAL 时区偏移的示例:
-
-8:00
-
–8 小时
-
30 分钟
POSIX 样式的格式 – STDoffset 或 STDoffsetDST 形式的时区规范,其中 STD 是时区缩写,offset 是从 UTC 向西的小时数偏移,而 DST 是可选的夏令时区缩写。夏令时时间假定为比给定的偏移提前一个小时。
POSIX 样式的时区格式使用格林威治以西的正偏移,而 ISO-8601 约定则使用格林威治以东的正偏移量。
以下是 POSIX 样式时区的示例:
-
PST8
-
PST8PDT
-
EST5
-
EST5EDT
注意
Amazon Redshift 不验证 POSIX 样式时区规格,因此可能将时区设置为无效值。例如,即使将时区设置成了无效值,以下命令也没有返回错误。
set timezone to ‘xxx36’;
ISO-8601 偏移 – ±[hh]:[mm]
形式的 UTC 偏移。
下面是 ISO-8601 偏移的示例:
-
-8:00
-
+7:30
示例
以下示例将当前会话的时区设置为 New York。
set timezone = 'America/New_York';
以下示例将当前会话的时区设置为 UTC–8 (PST)。
set timezone to '-8:00';
以下示例使用 INTERVAL 将时区设置为 PST。
set timezone interval '-8 hours'
以下示例将当前会话的时区重新设置为系统默认时区 (UTC)。
set timezone to default;
要为数据库用户设置时区,请使用 ALTER USER … SET 语句。以下示例将 dbuser 的时区设置为 New York。在所有后续会话中将为该用户保留新值。
ALTER USER dbuser SET timezone to 'America/New_York';