【发布时间】:2021-11-05 04:54:59
【问题描述】:
如果我继承了一个填充了TIMESTAMP 类型的Postgresql 数据库,并且觉得需要将它们全部转换为TIMESTAMPTZ 类型,那么这是一个简单的过程,只需要:
ALTER TABLE mytable ALTER COLUMN the_time_stamp TYPE TIMESTAMPTZ;
我有这样一个数据库,其中的所有时间戳都是在与我(和服务器)不同的时区创建的,因此它们似乎在内部存储为 TIMESTAMPTZ。也就是说,我有两个客户端(一个写入,一个读取,两者都不在 UTC 区域),当我读取时,写入 zone1 的时间戳在 zone2 中读取时是正确的,这意味着(对我而言)它们已被转换并且在写入和读取之间以 UTC 格式存储。这让我想知道:
- 是否所有时间戳都以相同的格式存储在数据库中,唯一的区别在于处理输入/输出的方式(根据所连接客户端的时区)?
如果它是真的,这似乎是一个如此清晰和简单的陈述,但我找不到它清楚和/或简单地陈述......
【问题讨论】:
-
"我有两个客户端,它们都不在 UTC 时区" - 你是说这些客户端在它们的连接上设置了会话时区吗?
-
说实话:我不确定 - 客户端编写是通过 Poco 库包装器;客户端读数是 psql。如前所述,我继承了这个数据库,其中的数据看起来还不错……但都是
timestamp格式,这已成为限制因素……
标签: postgresql