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

Posted

技术标签:

【中文标题】如何在 Postgresql 中使用 ALTER 将 VARCHAR 类型更改为 DATETIME?【英文标题】:How to change VARCHAR type to DATETIME using ALTER in Postgresql? 【发布时间】:2014-11-13 00:16:33 【问题描述】:

如何在 Postgresql 中使用 ALTERVARCHAR() 类型更改为 DATETIME

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

【问题讨论】:

【参考方案1】:

您想要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);

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

【讨论】:

以上是关于如何在 Postgresql 中使用 ALTER 将 VARCHAR 类型更改为 DATETIME?的主要内容,如果未能解决你的问题,请参考以下文章

postgresql: alter system

ALTER TABLE,在非空列中设置空,PostgreSQL 9.1

PostgreSQL ALTER TABLE 命令

在 Postgresql db 上使用 ALTER SEQUENCE 进行 Sqitch 迁移没有效果

PostgreSQL ALTER TABLE 命令

PostgreSQL ALTER TABLE 命令