如何将时间戳和偏移列转换为单个timestamptz列?

时间:2016-11-18 14:07:52

标签: postgresql timestamp timestamp-with-timezone

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

  • timestampwithouttimezone(类型TIMESTAMP WITHOUT TIME ZONE
  • utcoffset(类型INTEGER

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

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

1 个答案:

答案 0 :(得分:1)

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

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;