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

标签 sql postgresql sqldatatypes

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

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

最佳答案

你想要 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 .

关于sql - 如何在 Postgresql 中使用 ALTER 将 VARCHAR 类型更改为 DATETIME?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916350/

相关文章:

php - 这是什么数据类型要保存在 mysql 1 - 4.9

sql - 如何忽略列值上的字符串的一部分

postgresql - Postgres 将列从 TEXT 更改为 INTEGER 会增加表大小

postgresql - 使用 Postgres 触发器进行增量原子操作和高并发安全吗?

java - 将 PostgreSQL bytea-stored serialized-java-UUID 转换为 postgresql-UUID

iphone - NSInteger和int给出异常

java - 将 java.long 映射到 oracle.Number(14)

php - JOIN 表 MySQL 未在 PHP 中加入

IF 中的 MySQL 计数

sql - T-SQL 语句 OVER 子句排名函数