来自文档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 without time zone
,请为其指定正确的显式类型:timestamp with time zone
TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'