

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# timezone
<a name="r_timezone_config"></a>

## 值（默认为粗体）
<a name="r_timezone_config-values"></a>

 **UTC**，时区

## 语法
<a name="r_timezone_config-syntax"></a>

```
SET timezone { TO | = } [ time_zone | DEFAULT ]

SET time zone [ time_zone | DEFAULT ]
```

## 说明
<a name="r_timezone_config-description"></a>

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

**注意**  
您不能使用集群参数组设置 `timezone` 配置参数。使用 SET 命令只能为当前会话设置时区。要为某个特定数据库用户运行的所有会话设置时区，请使用 [ALTER USER](r_ALTER_USER.md) 命令。ALTER USER … SET TIMEZONE 将更改后续会话的时区，而不是更改当前会话的时区。

在使用带有 `TO` 或 `=` 的 `SET timezone`（一个词） 命令时，您可以将 *time\$1zone* 指定为时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移，如下所示。

```
SET timezone { TO | = } time_zone
```

在使用有关此行为的更多信息，请参阅*没有* `TO` 或 `=` 的 SET time zone 命令时，您可以使用 INTERVAL 指定 *time\$1zone*，同时还能指定时区名称、POSIX 样式的格式偏移或 ISO-8601 格式偏移，如下所示。

```
SET time zone time_zone
```

## 时区格式
<a name="r_timezone_config-formats"></a>

Amazon Redshift 支持以下时区格式：
+ 时区名称
+ INTERVAL
+ POSIX 式时区规格
+ ISO-8601 偏移

由于时区缩写，例如 PST 或 PDT，定义为从 UTC 的固定偏移，并且不包括夏令时时间规则，所以 SET 命令不支持时区缩写。

有关时区格式的详细信息，请参阅以下内容。

**时区名称** – 完整时区名称，如 America/New\$1York。完整时区名称可以包含夏令时规则。请注意，Amazon Redshift 使用 [IANA 时区数据库](https://www.iana.org/time-zones)作为时区规范的权威来源。

以下是完整时区名称的示例：
+ Etc/Greenwich
+ America/New\$1York 
+ 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
+ \$17:30

## 示例
<a name="r_timezone_config-examples"></a>

以下示例将当前会话的时区设置为 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';
```