SET 语句用于更改数据库的运行方式,例如更改自动提交设置或会话使用的资源池。
SET 语句
- 1: SET DATESTYLE
- 2: SET ESCAPE_STRING_WARNING
- 3: SET INTERVALSTYLE
- 4: SET LOCALE
- 5: SET ROLE
- 6: SET SEARCH_PATH
- 7: SET SESSION AUTOCOMMIT
- 8: SET SESSION CHARACTERISTICS AS TRANSACTION
- 9: SET SESSION GRACEPERIOD
- 10: SET SESSION IDLESESSIONTIMEOUT
- 11: SET SESSION MEMORYCAP
- 12: SET SESSION MULTIPLEACTIVERESULTSETS
- 13: SET SESSION RESOURCE_POOL
- 14: SET SESSION RUNTIMECAP
- 15: SET SESSION TEMPSPACECAP
- 16: SET STANDARD_CONFORMING_STRINGS
- 17: SET TIME ZONE
- 17.1: 用于设置 TIME ZONE 的时区名称
1 - SET DATESTYLE
指定如何设置当前会话的日期/时间输出格式。使用
SHOW DATESTYLE
验证当前输出设置。
语法
SET DATESTYLE TO { arg | 'arg' }[, arg | 'arg' ]
参数
SET DATESTYLE
只有一个参数,该参数可以设置为一个或两个指定日期排序和样式的实参。每个实参可以单独指定或结合使用;如果结合,则可按任意顺序指定。
下表说明了每种样式及其支持的日期排序实参:
Vertica 将忽略 ISO
和 GERMAN
日期样式的顺序实参。如果日期样式为 SQL
或 POSTGRES
,则顺序设置将决定以 MDY
还是 DMY
顺序输出日期。SQL
和 POSTGRES
都不支持 YMD
顺序。如果为 YMD
或 SQL
指定 POSTGRES
,Vertica 将忽略该设置,并使用默认的 MDY
顺序。
日期样式和排序还会影响 Vertica 解释输入值的方式。有关详细信息,请参阅日期/时间字面量。
特权
无
输入依赖项
在某些情况下,输入格式会决定输出格式,而不管日期样式和顺序的设置:
-
Vertica 中
DATESTYLE
的 ISO 输出为 ISO 长格式,但也接受某些输入样式。如果输入中最先出现年份,则将对输入和输出使用YMD
,而不考虑DATESTYLE
值。 -
INTERVAL
输入和输出共用同一格式,以下内容除外:-
CENTURY
或WEEK
等单位转换为年和日。 -
AGO
转换为相应符号。
如果日期样式设置为 ISO,输出将遵照以下格式:
[ quantity unit [...] ] [ days ] [ hours:minutes:seconds ]
-
示例
=> CREATE TABLE t(a DATETIME);
CREATE TABLE
=> INSERT INTO t values ('3/16/2016');
OUTPUT
--------
1
(1 row)
=> SHOW DATESTYLE;
name | setting
-----------+----------
datestyle | ISO, MDY
(1 row)
=> SELECT * FROM t;
a
---------------------
2016-03-16 00:00:00
(1 row)
=> SET DATESTYLE TO German;
SET
=> SHOW DATESTYLE;
name | setting
-----------+-------------
datestyle | German, DMY
(1 row)
=> SELECT * FROM t;
a
---------------------
16.03.2016 00:00:00
(1 row)
=> SET DATESTYLE TO SQL;
SET
=> SHOW DATESTYLE;
name | setting
-----------+----------
datestyle | SQL, DMY
(1 row)
=> SELECT * FROM t;
a
---------------------
16/03/2016 00:00:00
(1 row)
=> SET DATESTYLE TO Postgres, MDY;
SET
=> SHOW DATESTYLE;
name | setting
-----------+---------------
datestyle | Postgres, MDY
(1 row)
=> SELECT * FROM t;
a
--------------------------
Wed Mar 16 00:00:00 2016
(1 row)
2 - SET ESCAPE_STRING_WARNING
当前 会话期间,在字符串字面量中使用反斜杠时发出警告。
语法
SET ESCAPE_STRING_WARNING TO { ON | OFF }
参数
ON
- [默认] 在字符串字面量中使用反斜杠时发出警告。
提示: 已升级较早版本的 Vertica 的组织可以将此参数用作调试工具,以查找过去被视为转义字符,但现在被视为字面量的反斜杠。
OFF
- 忽略字符串字面量内的反斜杠。
特权
无
注意
-
此语句只能在 vsql 下使用。
-
请先关闭标准一致性字符串,然后再开启此参数。
提示
要在所有会话中设置转义字符串警告,请使用 EscapeStringWarnings 配置参数。请参阅国际化参数。示例
以下示例显示了如何关闭会话的转义字符串警告。
=> SET ESCAPE_STRING_WARNING TO OFF;
另请参阅
3 - SET INTERVALSTYLE
指定是否在当前 会话的间隔输出中包含单位。
语法
SET INTERVALSTYLE TO [ plain | units ]
参数
- plain
- (默认值)设置默认间隔输出以忽略单位。
- units
- 启用在间隔输出中包含子类单位标识符。当
INTERVALSTYLE
设置为单位时,DATESTYLE 参数将控制输出。如果启用了单位,但其未显示在输出中,请检查 DATESTYLE 参数值,该值必须设置为ISO
或POSTGRES
才能显示间隔单位。
特权
无
示例
请参阅设置间隔单位显示。
4 - SET LOCALE
指定当前 会话的区域设置。
还可以使用 vsql 命令
\locale
设置当前区域设置。
语法
SET LOCALE TO ICU‑locale‑identifier
参数
- locale‑identifier
- 指定要使用的 ICU 区域设置标识符,默认设置为:
en_US@collation=binary
如果设置为空字符串,Vertica 会将区域设置设为
en_US_POSIX
。需要满足以下要求:
-
Vertica 仅支持
COLLATION
关键字。 -
指定排序规则必须使用单引号。
-
特权
无
常用区域设置
有关标识符选项的详细信息,请参阅关于区域设置。有关区域设置标识符的完整列表,请参阅 ICU 项目。
de_DE
- 德语(德国)
en_GB
- 英语(英国)
es_ES
- 西班牙语(西班牙)
fr_FR
- 法语(法国)
pt_BR
- 葡萄牙语(巴西)
pt_PT
- 葡萄牙语(葡萄牙)
ru_RU
- 俄语(俄罗斯)
ja_JP
- 日语(日本)
zh_CN
- 中文(中国,简体中文)
zh_Hant_TW
- 中文(台湾,繁体中文)
示例
将会话区域设置为 en_GB
:
=> SET LOCALE TO en_GB;
INFO 2567: Canonical locale: 'en_GB'
Standard collation: 'LEN'
English (United Kingdom)
SET
使用区域设置的缩写:
=> SET LOCALE TO LEN;
INFO 2567: Canonical locale: 'en'
Standard collation: 'LEN'
English
SET
指定排序规则:
=> SET LOCALE TO 'tr_tr@collation=standard';
INFO 2567: Canonical locale: 'tr_TR@collation=standard'
Standard collation: 'LTR'
Turkish (Turkey, collation=standard) Türkçe (Türkiye, Sıralama=standard)
SET
另请参阅
5 - SET ROLE
为用户的当前会话启用角色。用户可以访问授予该角色的特权。启用角色不会影响当前已启用的角色。
提示
使用 SHOW AVAILABLE ROLES 列出授予的角色。语法
SET ROLE roles‑expression
参数
-
roles‑expression
- 使用以下表达式之一指定此用户的默认角色:
-
NONE
(默认值):禁用所有角色。 -
roles‑list
: 要启用的角色列表,以逗号分隔。您只能设置当前已授予您的角色。 -
ALL [EXCEPT roles‑list]
: 启用当前已授予此用户的所有角色,不包括在可选EXCEPT
子句中指定的任何以逗号分隔的角色。 -
DEFAULT
:启用所有默认角色。根据定义,默认角色会自动启用,但如果使用 SET ROLE NONE 禁用了这些角色,要重新启用这些角色,此选项可能很有用。
-
特权
无
示例
示例如下:
-
SHOW AVAILABLE_ROLES; 会列出用户可使用的角色,但不启用。
-
SET ROLE applogs; 为用户启用 applogs 角色。
-
SHOW ENABLED_ROLES; 将 applogs 角色列为已为用户启用 (SET)。
-
SET ROLE appuser; 为用户启用 appuser 角色。
-
SHOW ENABLED_ROLES 将 applogs 和 appuser 列为用户的已启用角色。
-
SET ROLE NONE 禁用用户的所有已启用角色。
-
SHOW ENABLED_ROLES 显示没有为用户启用任何角色。
=> SHOW AVAILABLE_ROLES;
name | setting
-----------------+----------------------------
available roles | applogs, appadmin, appuser
(1 row)
=> SET ROLE applogs;
SET
=> SHOW ENABLED_ROLES;
name | setting
---------------+---------
enabled roles | applogs
(1 row)
=> SET ROLE appuser;
SET
=> SHOW ENABLED_ROLES;
name | setting
---------------+------------------
enabled roles | applogs, appuser
(1 row)
=> SET ROLE NONE;
SET
=> SHOW ENABLED_ROLES;
name | setting
---------------+---------
enabled roles |
(1 row)
设置用户默认角色
虽然通常是由 DBADMIN 用户负责设置用户默认角色,但作为用户,您可以设置自己的角色。例如,如果您运行 SET ROLE NONE,则您的所有已启用角色将被禁用。因而决定了您需要将 role1 作为默认角色进行访问。DBADMIN 使用 ALTER USER 向您分配默认角色:
=> ALTER USER user1 default role role1;
此示例将 role1 设置为 user1 的默认角色,因为 DBADMIN 使用 ALTER USER 分配了此默认角色。
user1 => SET ROLE default;
user1 => SHOW ENABLED_ROLES;
name | setting
-----------------------
enabled roles | role1
(1 row)
将所有角色设为默认值
此示例将所有授予 user1 的角色设为默认角色:
user1 => SET ROLE all;
user1 => show enabled roles;
name | setting
----------------------------------
enabled roles | role1, role2, role3
(1 row)
将所有角色设为默认值(含例外)
此示例将授予用户的所有角色设为默认角色,但 role1 除外。
user1 => set role all except role1;
user1 => SHOW ENABLED_ROLES
name | setting
----------------------------
enabled roles | role2, role3
(1 row)
6 - SET SEARCH_PATH
指定当 SQL 语句指定不使用架构名称限定的表名称时 Vertica 搜索架构的顺序。 SET SEARCH_PATH
覆盖当前会话的搜索路径,该路径最初是在用户配置文件中设置的。此搜索路径一直有效,直到下一个 SET SEARCH_PATH
语句或会话结束为止。有关详细信息,请参阅设置搜索路径。
要查看当前搜索路径,请使用
SHOW SEARCH_PATH
。
语法
SET SEARCH_PATH { TO | = } { schema‑list | DEFAULT }
参数
- schema‑list
- 以逗号分隔的架构列表,表示 Vertica 搜索表中架构的顺序,该表的名称不通过架构名称进行限定。
如果搜索路径中包含的架构不存在,或者用户缺少对该架构的访问权限,Vertica 会静默跳过该架构。
DEFAULT
- 将搜索路径设置为数据库默认设置:
"$user", public, v_catalog, v_monitor, v_internal
特权
无
示例
显示当前搜索路径:
=> SHOW SEARCH_PATH;
name | setting
-------------+---------------------------------------------------
search_path | "$user", public, v_catalog, v_monitor, v_internal
(1 row)
将搜索路径重置为架构 store
和 public
:
=> SET SEARCH_PATH TO store, public;
=> SHOW SEARCH_PATH;
name | setting
-------------+-------------------------------------------------
search_path | store, public, v_catalog, v_monitor, v_internal
(1 row)
将搜索路径重置为数据库默认设置:
=> SET SEARCH_PATH TO DEFAULT;
SET
=> SHOW SEARCH_PATH;
name | setting
-------------+---------------------------------------------------
search_path | "$user", public, v_catalog, v_monitor, v_internal
(1 row)
7 - SET SESSION AUTOCOMMIT
设置语句是否在完成时自动提交其事务。此语句主要由客户端驱动程序用于启用和禁用自动提交,您永远没有必要直接调用该语句。
语法
SET SESSION AUTOCOMMIT TO { ON | OFF }
参数
ON
- 启用自动提交。语句会在完成时自动提交其事务。这是使用 Vertica 客户端库建立的连接的默认设置。
OFF
- 禁用自动提交。事务不会自动提交。这是交互会话(通过 vsql 建立的连接)的默认设置。
特权
无
示例
此示例显示了如何将 AUTOCOMMIT 设置为“on”,然后再设置为“off”。
=> SET SESSION AUTOCOMMIT TO on;
SET
=> SET SESSION AUTOCOMMIT TO off;
SET
另请参阅
8 - SET SESSION CHARACTERISTICS AS TRANSACTION
设置在此语句发出后开始的所有事务的隔离级别和访问模式。
事务将保留其隔离级别直至其完成,即使在事务处理期间会话的隔离级别发生更改也是如此。Vertica 内部进程(例如 Tuple Mover 和 刷新操作)以及 DDL 操作始终以 SERIALIZABLE 隔离级别运行以确保一致性。
语法
SET SESSION CHARACTERISTICS AS TRANSACTION settings
- 设置
- 以下两项中的一个或两个:
-
ISOLATION LEVEL [argument](#IsolationArgs)
-
[READ ONLY | READ WRITE](#ReadWrite)
-
ISOLATION LEVEL 实参
ISOLATION LEVEL 子句用于确定当同时运行其他多个事务时,此事务可以访问的数据。如果事务已运行,则不能在第一个查询 (SELECT) 或 DML 语句(INSERT、DELETE、UPDATE)之后更改隔离级别。
将 ISOLATION LEVEL 设置为以下实参之一:
SERIALIZABLE
- 设置最严格的 SQL 事务隔离级别。此级别连续而不是并发模拟事务。它持有锁并阻止写入操作,直到事务完成为止。
使用
SERIALIZABLE
的应用程序必须准备好在序列化失败后重试事务。对于正常的查询操作,不建议使用此隔离级别。将事务隔离级别设置为
SERIALIZABLE
不会应用于临时表。临时表通过其事务范围进行隔离。 REPEATABLE READ
- 自动转换为
SERIALIZABLE
。 READ COMMITTED
- 默认值,允许并发事务。
READ UNCOMMITTED
- 自动转换为
READ COMMITTED
。
READ WRITE/READ ONLY
您可以将事务访问模式设置为以下几项之一:
READ WRITE
- 默认值,允许对 SQL 语句进行读取/写入。
READ ONLY
- 不允许需要写入权限的 SQL 语句:
-
对任何非临时表的 INSERT、UPDATE、DELETE 和 COPY 操作。
-
CREATE、ALTER 和 DROP
-
GRANT、REVOKE
-
EXPLAIN(如果要解释的 SQL 语句需要写入权限)。
注意
将事务会话模式设置为只读不会阻止所有写入操作。 -
特权
无
查看会话事务特征
SHOW TRANSACTION_ISOLATION 和 SHOW TRANSACTION_READ_ONLY 可显示当前会话的事务设置:
=> SHOW TRANSACTION_ISOLATION;
name | setting
-----------------------+--------------
transaction_isolation | SERIALIZABLE
(1 row)
=> SHOW TRANSACTION_READ_ONLY;
name | setting
-----------------------+---------
transaction_read_only | true
(1 row)
9 - SET SESSION GRACEPERIOD
设置会话套接字在等待给定查询的客户端输入或输出时保持拦截状态的时间。如果套接字在超过宽限期设置的一段连续时间内被拦截,服务器将关闭套接字并引发致命错误。然后会话终止。如果未设置宽限期,查询可以无限期地在套接字上保留它的块。
Vertica 独立应用会话的宽限期和
RUNTIMECAP
设置。如果未设置宽限期,则无论查询的 RUNTIMECAP
设置如何,查询都可以在会话套接字上无限期地阻塞。
语法
SET SESSION GRACEPERIOD duration
参数
- duration
- 指定查询可以在任何会话套接字上阻塞的时间,可以为以下几项之一:
-
'interval'
:将当前会话查询的最长宽限期指定为间隔,最长 20 天。 -
=DEFAULT
:将此会话中查询的宽限期设置为用户的GRACEPERIOD
值。新会话最初将设置为此值。 -
NONE
:仅对超级用户有效,将移除之前在会话查询中设置的任何宽限期。
-
特权
-
无论数据库或节点设置如何,超级用户均可以将会话宽限期增加到任意值。
-
非超级用户只能将会话宽限期设置为不大于自己的用户设置的值。如果没有为用户显式设置宽限期,则该用户的宽限期将从节点或数据库设置继承。
示例
请参阅《管理员指南》中的处理会话套接字阻止。
10 - SET SESSION IDLESESSIONTIMEOUT
设置会话在退出之前可以保持空闲的最长时间。
注意
空闲会话没有正在运行的查询。语法
SET SESSION IDLESESSIONTIMEOUT duration
参数
- duration
- 指定会话在退出之前可以保持空闲的时间:
-
NONE
(默认值):会话未设置空闲超时。 -
'interval'
:指定为间隔,即会话可以保持空闲的最长时间。 -
=DEFAULT
:将此会话的空闲超时时间设置为用户的IDLESESSIONTIMEOUT
值。
-
特权
-
无论数据库或节点设置如何,超级用户均可以将会话保持空闲的时间增加到任意值。
-
非超级用户只能将会话空闲时间设置为不大于自己的用户设置的值。如果没有为用户显式设置会话空闲时间,则该用户的会话空闲时间将从节点或数据库设置继承。
示例
请参阅《管理员指南》中的管理客户端连接。
11 - SET SESSION MEMORYCAP
限制可以为当前 会话中的任何请求分配的内存量。此限制仅适用于当前会话;不限制多个会话使用的内存总量。
语法
SET SESSION MEMORYCAP limit
参数
- 限制
- 以下几项之一:
-
'max‑expression':一个字符串值,用于指定内存限制,为以下几项之一:
-
int%
— 将最大值表示为 资源管理器可用总内存的百比,其中 int 为 0 至 100 之间的整数。例如:MEMORYCAP '40%'
-
int{K|M|G|T}
— 以 KB、MB、GB 或 TB 表示内存分配。例如:MEMORYCAP '10G'
-
-
=DEFAULT
:将此会话中查询的内存上限设置为用户的MEMORYCAP
值。新会话最初将设置为此值。 -
NONE
:移除此会话的内存上限。
-
特权
-
超级用户可以将会话内存上限增加到任意值。
-
非超级用户只能将会话内存上限设置为不大于自己的用户设置的值。
示例
将会话内存上限设置为 2 GB:
=> SET SESSION MEMORYCAP '2G';
SET
=> SHOW MEMORYCAP;
name | setting
-----------+---------
memorycap | 2097152
(1 row)
将内存上限恢复为用户配置文件中指定的默认设置:
=> SET MEMORYCAP=DEFAULT;
SET
=> SHOW MEMORYCAP;
name | setting
-----------+---------
memorycap | 2013336
(1 row)
另请参阅
管理工作负载12 - SET SESSION MULTIPLEACTIVERESULTSETS
启用或禁用在单一 JDBC 连接上执行多个活动结果集 (MARS)。使用此选项需要具有活动的 JDBC 连接。
语法
SET SESSION MULTIPLEACTIVERESULTSETS TO { ON | OFF }
参数
ON
- 启用 MultipleActiveResultSets。允许您在单一连接上执行多个结果集。
OFF
- 禁用 MultipleActiveResultSets。每个连接只允许一个活动结果集。(默认值。)
特权
无
示例
此示例显示了如何将 MultipleActiveResultSets 设置为“on”,然后再设置为“off”:
=> SET SESSION MULTIPLEACTIVERESULTSETS TO on;
SET
=> SET SESSION MULTIPLEACTIVERESULTSETS TO off;
SET
13 - SET SESSION RESOURCE_POOL
将用户 会话与指定资源池关联。
语法
SET SESSION RESOURCE_POOL = { pool-name | DEFAULT }
参数
- pool‑name
- 要与当前会话关联的现有资源池的名称。
DEFAULT
- 将会话的资源池设置为用户的默认资源池。
特权
-
超级用户可以将其会话分配到任意可用的资源池。
-
非超级用户必须具有资源池的 USAGE 权限。
示例
此示例将 ceo_pool
设置为会话资源池:
=> SET SESSION RESOURCE_POOL = ceo_pool;
SET
另请参阅
14 - SET SESSION RUNTIMECAP
设置查询和存储过程可以在给定会话中运行的最长时间。如果查询或存储过程超出其会话的 RUNTIMECAP
,Vertica 将终止它并返回错误。不能将 RUNTIMECAP
增加到超出用户配置文件中设置的限制。
注意
Vertica 不严格执行会话RUNTIMECAP
设置。如果对查询或存储过程进行计时,您可能会发现其运行时间超出了 RUNTIMECAP
设置。
语法
SET SESSION RUNTIMECAP duration
参数
- duration
- 指定给定查询可以在当前会话中运行的时间,为以下几项之一:
-
NONE
(默认值):移除所有当前会话查询的运行时限制。 -
'interval'
:将当前会话查询的最长运行时间指定为间隔,最长为一年,例如,1 minute
或100 seconds
。 -
=DEFAULT
:将此会话中查询的最长运行时间设置为用户的RUNTIMECAP
值。
-
特权
-
超级用户可以将会话
RUNTIMECAP
增加到任意值。 -
非超级用户只能将会话
RUNTIMECAP
设置为不大于自己的用户RUNTIMECAP
的值。
示例
将当前会话的最大查询运行时设置为 10 分钟:
=> SET SESSION RUNTIMECAP '10 minutes';
将会话 RUNTIMECAP
恢复为您的用户默认设置:
=> SET SESSION RUNTIMECAP =DEFAULT;
SET
=> SHOW RUNTIMECAP;
name | setting
------------+-----------
runtimecap | UNLIMITED
(1 row)
将 RUNTIMECAP 设置为 1 SECOND
并使用无限循环运行匿名过程:
=> SET SESSION RUNTIMECAP '1 SECOND';
SET
=> DO $$
BEGIN
LOOP
END LOOP;
END;
$$;
ERROR 0: Query exceeded maximum runtime
HINT: Change the maximum runtime using SET SESSION RUNTIMECAP
另请参阅
15 - SET SESSION TEMPSPACECAP
设置 会话发出的任何请求可以消耗的最大临时文件存储量。如果查询的执行计划所需的存储空间超出会话 TEMPSPACECAP,将会返回错误。
语法
SET SESSION TEMPSPACECAP limit
参数
-
限制
- 分配给当前会话的最大临时文件存储量,为以下几项之一:
-
NONE
(默认值):临时存储不受限制 -
= DEFAULT
:会话 TEMPSPACECAP 设置为用户的 TEMPSPACECAP 值。 -
用于指定存储限制的字符串,为以下几项之一:
-
int%
将最大值表示为资源管理器可用的临时总存储的百分比,其中 int 为 0 至 100 之间的整数值。例如:SET SESSION TEMPSPACECAP '40%';
-
int{K|M|G|T}
以 KB、MB、GB 或 TB 表示存储分配。例如:SET SESSION TEMPSPACECAP '10G';
-
-
特权
非超级用户:
-
仅限于设置自己的会话
-
会话 TEMPSPACECAP 不能大于其自己的 TEMPSPACECAP。
示例
将会话 TEMPSPACECAP 设置为 20 GB:
=> SET SESSION TEMPSPACECAP '20G';
SET
=> SHOW TEMPSPACECAP;
name | setting
--------------+----------
tempspacecap | 20971520
(1 row)
注意
SHOW 以 KB 为单位显示 TEMPSPACECAP。将会话 TEMPSPACECAP 设置为不受限制:
=> SET SESSION TEMPSPACECAP NONE;
SET
=> SHOW TEMPSPACECAP;
name | setting
--------------+-----------
tempspacecap | UNLIMITED
(1 row)
另请参阅
16 - SET STANDARD_CONFORMING_STRINGS
指定是否将反斜杠视为当前会话的转义字符。默认情况下,Vertica 符合 SQL 标准并支持 Unicode 转义中的 SQL:2008 字符串字面量。
语法
SET STANDARD_CONFORMING_STRINGS TO { ON | OFF }
参数
ON
- (默认)将普通字符串字面量 ('...') 视为反斜杠 (\),当作文本处理。这意味着反斜杠将被视为字符串字面量,而非转义字符。
OFF
- 将反斜杠视为转义字符。
特权
无
要求
-
此语句只能在 vsql 下使用。
-
标准-一致性字符串必须开启才可使用 Unicode 样式的字符串字面量 (
U&'\nnnn'
)。
示例
关闭会话的一致性字符串:
=> SET STANDARD_CONFORMING_STRINGS TO OFF;
验证当前设置:
=> SHOW STANDARD_CONFORMING_STRINGS;
name | setting
-----------------------------+---------
standard_conforming_strings | off
(1 row)
打开会话的一致性字符串:
=> SET STANDARD_CONFORMING_STRINGS TO ON;
另请参阅
17 - SET TIME ZONE
更改当前
会话的 TIME ZONE 运行时参数。使用
SHOW TIMEZONE
显示会话的当前时区。
如果您使用 POSIX 格式设置时区,您使用的时区缩写将覆盖默认时区缩写。如果将日期样式设置为 POSTGRES,在将时间戳转换为字符串时,也会使用您使用的时区缩写。
语法
SET TIME ZONE [TO] { value | 'value' }
注意
Vertica 将字面量TIME ZONE
和 TIMEZONE
视为同义词。
参数
- value
- 以下几项之一:
-
Vertica 支持的时区字面量。要查看默认的有效字面量列表,请参阅以下目录中的文件:
/opt/vertica/share/timezonesets
-
带符号整数,表示 UTC 偏移量(以小时为单位)
-
偏移量为带符号整数的时区字面量。例如:
=> SET TIME ZONE TO 'America/New York -3'; -- equivalent to Pacific time
注意
仅当 SET TIME ZONE 的实参为有效时区+偏移量组合时,此实参才有意义。但是,对于无意义的组合(例如America/NewYork + 150
),Vertica 也不会返回错误。 -
常数
LOCAL
和DEFAULT
,分别将时区设置为环境变量TZ
中指定的时区,或者如果TZ
未定义,则设置为操作系统时区。
只有有效的(时区+偏移量)组合才能作为此函数的参数。
-
特权
无
示例
=> SET TIME ZONE TO DEFAULT;
=> SET TIME ZONE TO 'PST8PDT'; -- Berkeley, California
=> SET TIME ZONE TO 'Europe/Rome'; -- Italy
=> SET TIME ZONE TO '-7'; -- UDT offset equivalent to PDT
=> SET TIME ZONE TO INTERVAL '-08:00 HOURS';
另请参阅
在 Vertica 中使用时区17.1 - 用于设置 TIME ZONE 的时区名称
Vertica 将下面列出的时区名称识别为 SQL 时区的有效设置(TIME ZONE 运行时参数)。
注意
时区和夏令时规则由各个政府控制,可能会更改。有关最新信息,请参阅时区和夏令时数据源。这些名称不同于
/opt/vertica/share/timezonesets
中显示的名称,后者以 date/time 输入值的形式获得 Vertica 识别。下面列出的 TIME ZONE 名称意味着本地夏令时规则,其中 date/time 输入名称代表 UTC 的固定偏移量。
在许多情况下,同一时区具有多个名称。这些名称位于同一个组中。列表主要按常用时区名称进行排序。
除了列表中的名称之外,Vertica 还接受以下时区名称之一:
-
STDoffset
-
STDoffsetDST
其中 STD 为时区缩写,offset 为从 UTC 往西的偏移量数值(以小时为单位),而 DST 为可选的夏令时时区缩写,假定代表比给定偏移量提前一小时。
例如,如果 EST5EDT
还不是公认的时区名称,Vertica 将接受它在功能上等同于美国东海岸时间。如果存在夏令时时区名称,Vertical 将假定该名称使用美国时区规则,因此此功能在北美以外地区的使用受到限制。
当心
请注意,这一预配可能会导致静默接受无效输入,因为对时区缩写的合理性未执行任何检查。例如,SET TIME ZONE TO FOOBANKO
可以使用 GMT 的一个比较奇特的缩写发挥作用,使系统高效运行。
时区
- 非洲
- 美洲
- 南极洲
- 亚洲
- 大西洋
- 澳大利亚
-
CET
-
EET
-
Etc/GMT
-
GMT
-
GMT+0
-
GMT-0
-
GMT0
-
Greenwich
-
Etc/Greenwich
-
- 欧洲
-
工厂
- 印度洋
-
MET
- 太平洋
-
UCT Etc
-
UCT
-
偏移量
-
Universal Zulu
-
Etc/UTC
-
Etc/Universal
-
Etc/Zulu
-
-
WET