↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.2 已于 2007 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

SET

SET — 更改一个运行时参数

大纲

SET variable { TO | = } { value | 'value' | DEFAULT }
SET TIME ZONE { 'timezone' | LOCAL | DEFAULT }
  

输入

variable

一个可设置的运行时参数。

value

参数的新值。DEFAULT 可用于 指定把参数重置为默认 值。允许使用字符串列表,但更复杂的 构造可能需要加单引号或双引号。

描述

SET 命令更改运行时配置 参数。下列参数可以更改:

CLIENT_ENCODING
NAMES

设置多字节客户端编码。指定的编码 必须为后端所支持。

这个选项只有在 PostgreSQL 以多字节 支持构建时才可用。

DATESTYLE

选择日期/时间的表示风格。这里进行两个独立的 设置:默认的日期/时间输出和对有歧义输入的 解释。

以下是日期/时间的输出风格:

ISO

使用 ISO 8601 风格的日期和时间(YYYY-MM-DD HH:MM:SS)。这是默认值。

SQL

使用 Oracle/Ingres 风格的日期和时间。注意这种 风格与 SQL(它强制使用 ISO 8601 风格)毫无关系,这个选项的命名是一个历史意外。

PostgreSQL

使用传统的 PostgreSQL 格式。

German

数值日期表示使用 dd.mm.yyyy。

下面两个选项既决定 “SQL” 和 “PostgreSQL” 输出格式的 子风格,也决定有歧义日期输入的首选 解释。

European

数值日期表示使用 dd/mm/yyyy。

NonEuropean
US

数值日期表示使用 mm/dd/yyyy。

SET DATESTYLE 的值可以取自 第一个列表(输出风格),或第二个列表 (子风格),或从两个列表中各取一个并用逗号分隔。

日期格式的初始化可以通过以下方式完成:

设置 PGDATESTYLE 环境变量。 如果在基于 libpq 的客户端前端环境中设置了 PGDATESTYLE,libpq 会在连接启动时自动把 DATESTYLE 设为 PGDATESTYLE 的值。
使用选项 -o -e 运行 postmaster,把日期设为 European 约定。

DateStyle 选项其实只是为了 移植应用而设的。要按你的选择格式化日期/时间值, 请使用 to_char 函数 族。

SEED

设置随机数生成器的内部种子。

value

random 函数使用的 种子的值。允许的 值是 0 到 1 之间的浮点数,之后会 乘以 231-1。如果使用范围之外的数,该乘积会 静默溢出。

也可以通过调用 setseed SQL 函数来设置种子:

SELECT setseed(value);
            
SERVER_ENCODING

设置多字节服务器编码。

这个选项只有在 PostgreSQL 以多字节 支持构建时才可用。

TIME ZONE
TIME ZONE

设置会话的默认时区。参数可以是 SQL 时间间隔常量、整数或双精度 常量,或者一个表示宿主操作系统 所支持时区的字符串。

时区的可用值取决于你的操作系统。例如在 Linux 上, /usr/share/zoneinfo 包含时区 数据库。

下面是一些有效的时区值:

'PST8PDT'

把时区设为加利福尼亚州。

'Portugal'

把时区设为葡萄牙。

'Europe/Rome'

把时区设为意大利。

7

把时区设为 GMT 以西 7 小时偏移(相当于 PDT)。

INTERVAL '08:00' HOUR TO MINUTE

把时区设为 GMT 以西 8 小时偏移(相当于 PST)。

LOCAL
DEFAULT

把时区设为你的本地时区(你的 操作系统默认的时区)。

如果指定了无效的时区,时区 会变成 GMT(至少在大多数系统上如此)。

如果在基于 libpq 的客户端前端环境中设置了 PGTZ 环境变量,libpq 会在 连接启动时自动把 TIMEZONE 设为 PGTZ 的值。

其他运行时参数的完整列表见 管理员指南。

使用 SHOW 显示 参数的当前设置。

诊断

SET VARIABLE

成功时返回的消息。

ERROR: not a valid option name: name

你试图设置的参数不存在。

ERROR: permission denied

你必须是超级用户才能访问某些设置。

ERROR: name can only be set at start-up

有些参数在服务器启动后就是固定的。

示例

把日期风格设为带欧洲约定的传统 PostgreSQL 风格:

SET DATESTYLE TO PostgreSQL,European;

把时区设为加利福尼亚州伯克利,使用双引号来 保留时区说明符的大写属性(注意 这里显示的日期/时间格式是 ISO):

 
SET TIME ZONE "PST8PDT";
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 07:41:21-08

把时区设为意大利(注意需要单引号或双引号来 处理特殊字符):

 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 17:41:31+02

兼容性

SQL92

上面所示的第二种语法(SET TIME ZONE) 试图模仿 SQL92。但 SQL 只允许 数值形式的时区偏移。所有其他参数设置以及 上面所示的第一种语法都是 PostgreSQL 扩展。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。