【问题标题】:Convert exists timestamp column data from local time to UTC将现有时间戳列数据从本地时间转换为 UTC
【发布时间】:2015-05-10 06:24:24
【问题描述】:

我曾经在本地时间将时间戳插入到我的 PostgreSQL 表中。现在我开始使用 UTC,我需要找到一种方法将所有已插入的日期/时间转换为 UTC 时间。我该怎么做?

【问题讨论】:

  • 正常的方法是读取非UTC的记录,将它们更改为UTC并回写。您是否在表中添加了一个列来指示新值,或者有其他一些(最小记录数),您可以根据这些列来确定新旧时间戳之间的位置?通过编辑此额外信息来更新您的帖子(不要对评论发表评论,而是使问题更完整(但在您的更改中省略 EditUpdate) )
  • 列的数据类型是什么? timestamptimestamp with time zone?

标签: postgresql timezone timestamp


【解决方案1】:

很简单,在带有时区的时间戳中,所有时间都已经存储在 UTC 中,当您插入或选择它们时转换完成(添加或减去小时)。 删除“with time zone”属性的最安全方法是将您的时区设置为 UTC, 创建一个时间戳(无时区)的新字段并正确设置数据,然后删除旧字段,在没有时区的情况下重新创建它,然后将数据复制回,删除列。 看起来工作量很大,但您可以在此过程中验证您的结果,如果您需要进行任何更新或完全退出,您就会知道没有数据丢失的机会。

【讨论】:

    猜你喜欢
    • 2019-08-15
    • 2019-03-09
    • 2019-01-05
    • 2013-03-23
    • 2018-09-17
    • 2015-04-20
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多