在postgres或Vertica中设置时区实际上做了什么?您编写的查询是否转换了日期列中的当前数据?

时间:2013-04-30 15:04:39

标签: sql postgresql vertica

我在postgres数据库中执行了以下操作

SET TIME ZONE 'UTC';

当我执行以下操作时,它将UTC显示为时区。

show timezone;

SELECT NOW();

接下来我想查询一个表。我的表有几列,其中一些是日期列。如果我查询该表,日期列是否会以UTC格式显示日期?什么是没有时间,只有列中的日期。这个时区设置如何运作?

1 个答案:

答案 0 :(得分:1)

在Postgresql中,SET TIME ZONE 'UTC'仅设置“当前”(会话范围)时区。

显然,时区对date数据类型没有影响。 除此之外,Postgresql还有两种与日期同步的数据类型:

timestamptz = timestamp with time zone

timestamp   = timestamp without time zone

实际上,它们都没有存储时区,但它们在“当前时区”如何影响它们方面存在差异。简而言之,timestamp (with time zone)输入需要时区,如果没有给出,则默认为“当前时区”;并使用“当前时区”写入其输出。 timestamp *without* time zone不使用时区进行输入或输出。

有关详情,请阅读docs