我在我的 postgres 数据库中执行了以下操作
SET TIME ZONE 'UTC';
当我执行以下操作时,它将 UTC 显示为时区。
show timezone;
SELECT NOW();
接下来我要查询一个表。我的表有几列,其中一些是日期列。如果我查询该表,日期列会以 UTC 格式显示日期吗?什么是没有时间,只有列中的日期。此时区设置如何工作?
我在我的 postgres 数据库中执行了以下操作
SET TIME ZONE 'UTC';
当我执行以下操作时,它将 UTC 显示为时区。
show timezone;
SELECT NOW();
接下来我要查询一个表。我的表有几列,其中一些是日期列。如果我查询该表,日期列会以 UTC 格式显示日期吗?什么是没有时间,只有列中的日期。此时区设置如何工作?
在 Postgresql 中,SET TIME ZONE 'UTC'
仅设置“当前”(会话范围)时区。
显然,时区对日期数据类型没有影响。除此之外,Postgresql 有两种 date-with-time 数据类型:
timestamptz = timestamp with time zone
timestamp = timestamp without time zone
实际上,它们都没有存储时区,但它们在“当前时区”如何影响它们方面有所不同。简而言之,timestamp (with time zone)
输入需要 timezone ,如果没有给出默认值是“当前时区”;并且其输出是使用“当前时区”写入的。Atimestamp *without* time zone
不使用时区进行输入或输出。
有关详细信息,请阅读文档。