timezone - Amazon Redshift

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 样式的格式STDoffsetSTDoffsetDST 形式的时区规范,其中 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';