改变列(使用 + where)

alter column (using + where)

我使用 postgresql 9.3, 我使用此查询将时间戳列转换为 UTC。

ALTER TABLE table 
ALTER timestamp TYPE timestamp 
USING timestamp AT TIME ZONE 'UTC' ;

我需要在查询中添加 WHERE cluose :

ALTER TABLE table 
ALTER timestamp TYPE timestamp where timestamp < '2015-01-06 00:00:00'
USING timestamp AT TIME ZONE 'UTC' ;

但是,这是行不通的。 没有关于如何做到这一点的明确资源。

您只能将 ALTER TYPE 构造应用于整列,而不是某些行。如果你想转换时间戳值,你应该使用更新。

您不能使用 where 更改 table 列类型,因为 "where" 是 DML 而 "alter" 是 DDL。在

时使用更新