如何将 timestamp 和 offset 列转换为单个 timestamptz 列?
How do I convert timestamp and offset columns to a single timestamptz column?
图片我有一个 table 包含以下两列:
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 查询来获取偏移量并设置时间戳的时区?如果是这样的话,那个查询会是什么?我找不到任何示例来说明如何使用整数更新时区。
假设偏移量以小时为单位,您可以这样做:
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;
图片我有一个 table 包含以下两列:
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 查询来获取偏移量并设置时间戳的时区?如果是这样的话,那个查询会是什么?我找不到任何示例来说明如何使用整数更新时区。
假设偏移量以小时为单位,您可以这样做:
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;