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

bil*_*uli 1 sql postgresql sqldatatypes

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

列数据的结构已经如下:"2013-12-08 16:09:07"

Cra*_*ger 5

您需要USING子句 toALTER TABLE ... ALTER COLUMN ... TYPEfunction to_timestamp

ALTER TABLE mytable 
  ALTER COLUMN thecolumn 
   TYPE TIMESTAMP WITH TIME ZONE 
     USING to_timestamp(thecolumn, 'YYYY-MM-DD HH24:MI:SS');
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于数据看起来已经是有效的时间戳,您可以通过强制转换来简化它:

ALTER TABLE mytable 
  ALTER COLUMN thecolumn 
   TYPE TIMESTAMP WITH TIME ZONE 
     USING to_timestamp(thecolumn::timestamp with time zone);
Run Code Online (Sandbox Code Playgroud)

您会注意到我使用了类型名称“timestamp with time zone”而不是“datetime”。这是因为在 PostgreSQL 中,datetime只是timestamp without time zone... 的别名,但在大多数情况下您实际上想使用它timestamp with time zone。要了解有关时间戳的更多信息,请参阅手册