为什么 pg_typeof(TIMESTAMP '2004-10-19 10:23:54+02') 显示没有时区的时间戳

问题描述 投票:0回答:1

来自文档https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-INPUT-TIME-STAMPS

时间戳 '2004-10-19 10:23:54+02' 是带有时区的时间戳

问题: 为什么

select pg_typeof(TIMESTAMP '2004-10-19 10:23:54+02');
给出
timestamp without time zone
?正如文档所说,期待
timestamp with time zone


Postgres 版本

SELECT version();
显示
PostgreSQL 14.14 (Debian 14.14-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit

postgresql timestamp timestamp-with-timezone
1个回答
0
投票

正如您链接到的文档中所说:

PostgreSQL 在确定其类型之前从不检查文字字符串的内容,因此将以上两者视为

timestamp without time zone
。为了确保文字被视为
timestamp with time zone
,请为其指定正确的显式类型:

TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'
© www.soinside.com 2019 - 2024. All rights reserved.