postgresql 如何从postgres timestamptz中获取时区名称?

ztigrdn8  于 2023-03-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(155)

我正在Postgres中生成实体化视图,其中一列将包含表示月初的timestamptz。常规选择date_trunc('month',t.starttime)将生成创建或刷新实体化视图的系统所在时区中的月初。
我希望能够指定月初所在的时区,我可以指定时区,但我必须使用字符串,相反,我希望使用存储在表中的值,这将返回一个值,该值将本月的第一天存储为芝加哥的午夜:

select (date_trunc('month', t.tstzcol) at time zone 'America/Chicago')::timestamptz;

但我想用时区名称t.tstzcol.替换“America/芝加哥”。我尝试使用extract(timezone from t.tstzcol),但它返回一个整数,不适用于at time zone
如何强制date_trunc返回所需时区的timestamptz,而不是本地时区?

fnvucqvd

fnvucqvd1#

PostgreSQL timestamp with time zone不包含时区。相反,该值以2000-01-01 00:00:00 UTC之后的微秒数存储在数据库中。您看到的时区偏移量是在将该值转换为字符串时基于timezone的当前设置计算的。
您必须将时区存储在第二列中。

相关问题