use*_*012 12 postgresql postgresql-9.1
嘿,我刚刚开始研究 PostgreSQL,我想知道如何更改列的数据类型,我尝试了以下命令:
alter table tableName alter column columnName type timestamp with time zone;
Run Code Online (Sandbox Code Playgroud)
但是我收到以下消息:
column "columnName" cannot be cast to type timestamp with time zone
Run Code Online (Sandbox Code Playgroud)
当前列的数据类型为 int,我想将其更改为时间戳
Postgres 不知道如何将 int 转换为时间戳。有几种情况,通常它们有不同的开始日期。
如果您查看文档,您会发现一行语法以及如何转换 unix 时间整数类型的示例:
ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法可以使用该USING
子句来做到这一点。就像这样:
ALTER TABLE tableName
ALTER columnName type TIMESTAMP WITH TIME ZONE
USING to_timestamp(columnName) AT TIME ZONE 'America/New_York';
Run Code Online (Sandbox Code Playgroud)
Postgres 不允许 int 类型列直接更改为时区。要实现这一点,您必须首先将列类型更改为 varchar,然后将其更改为时区。
alter table tableName alter column columnName type varchar(64);
alter table tableName alter column columnName type timestamp with time zone;
归档时间: |
|
查看次数: |
25802 次 |
最近记录: |