如何在Postgresql中使用ALTER将VARCHAR类型更改为DATETIME?

时间:2014-09-18 15:09:09

标签: sql postgresql

如何在Postgresql中使用ALTER将VARCHAR()类型更改为DATETIME? 我的表格列已经有如下数据:" 2013-12-08 16:09:07"

1 个答案:

答案 0 :(得分:3)

您需要USING clause to ALTER TABLE ... ALTER COLUMN ... TYPEthe 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