如何将 timestamp 和 offset 列转换为单个 timestamptz 列?

How do I convert timestamp and offset columns to a single timestamptz column?

图片我有一个 table 包含以下两列:

我想将这两列转换为一个 TIMESTAMP WITH TIME ZONE 类型的列。这可以使用 ALTER TABLE ALTER COLUMN [column] SET DATE TYPE TIMESTAMP WITH TIME ZONE 查询和附加的 USING 子句来实现吗?

或者我是否需要一个单独的 UPDATE 查询来获取偏移量并设置时间戳的时区?如果是这样的话,那个查询会是什么?我找不到任何示例来说明如何使用整数更新时区。

假设偏移量以小时为单位,您可以这样做:

ALTER TABLE mytab
   ALTER timestampwithouttimezone
      TYPE timestamp with time zone
      USING CAST (timestampwithouttimezone::text || ' '
                     || to_char(utcoffset, 'S00FM')
                  AS timestamp with time zone),
   DROP utcoffset;