如何在Postgresql中使用ALTER将VARCHAR()类型更改为DATETIME? 我的表格列已经有如下数据:" 2013-12-08 16:09:07"
答案 0 :(得分:3)
您需要USING
clause to ALTER TABLE ... ALTER COLUMN ... TYPE
和the to_timestamp
function。
ALTER TABLE mytable
ALTER COLUMN thecolumn
TYPE TIMESTAMP WITH TIME ZONE
USING to_timestamp(thecolumn, 'YYYY-MM-DD HH24:MI:SS');
在这种情况下,由于数据看起来已经是一个有效的时间戳,您可以使用强制转换来简化它:
ALTER TABLE mytable
ALTER COLUMN thecolumn
TYPE TIMESTAMP WITH TIME ZONE
USING to_timestamp(thecolumn::timestamp with time zone);
您会注意到我使用了类型名称"时区与时区"而不是" datetime"。这是因为在PostgreSQL中,datetime
只是timestamp without time zone
的别名......但在大多数情况下,您确实想要使用timestamp with time zone
。要了解有关时间戳的更多信息,请see the manual。