Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

timezone

值(默认为用粗体表示)

UTC,时区

语法

Copy
SET timezone { TO | = } [ time_zone | DEFAULT ] SET time zone [ time_zone | DEFAULT ]

描述

设置当前会话的时区。时区可以为协世界或时区名称的偏移。

注意

您不能使用集群参数组设置 timezone 配置参数。使用 SET 命令只能为当前会话设置时区。要为某个特定数据库用户运行的所有会话设置时区,请使用 ALTER USER 命令。ALTER USER … SET TIMEZONE 将更改后续会话的时区,而不是更改当前会话的时区。

在使用带有 TO=SET timezone(一个词) 命令时,您可以将 time_zone 指定为时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移,如下所示。

Copy
SET timezone { TO | = } time_zone

在使用 没有 TO= 的 SET time zone 命令时,您可以将 time_zone 指定为时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移,如下所示。

Copy
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,也是缩写。

要查看有效时区名称的列表,请运行以下命令。

Copy
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 式时区规格,因此可能将时区设置为无效值。例如,即使将时区设置成了无效值,以下命令也没有返回错误。

Copy
set timezone to ‘xxx36’;

ISO-8601 偏移 - ±[hh]:[mm] 形式的 UTC 偏移。

下面是 ISO-8601 偏移的示例:

  • -8:00

  • +7:30

示例

以下示例将当前会话的时区设置为 New York。

Copy
set timezone = 'America/New_York';

以下示例将当前会话的时区设置为 UTC–8 (PST)。

Copy
set timezone to '-8:00';

以下示例使用 INTERVAL 将时区设置为 PST。

Copy
set timezone interval '-8 hours'

以下示例将当前会话的时区重新设置为系统默认时区 (UTC)。

Copy
set timezone to default;

要为数据库用户设置时区,请使用 ALTER USER … SET 语句。以下示例将 dbuser 的时区设置为 New York。在所有后续会话中将为该用户保留新值。

Copy
ALTER USER dbuser SET timezone to 'America/New_York';