从时间改变列与时区到时间戳

wil*_*lty 4 sql postgresql timestamp alter postgresql-9.2

我无法将end_datekey_request时区中调用的表中调用的列更改为timestampPostgres数据库.我尝试使用以下代码:

alter table key_request alter column end_date type timestamp with time zone using end_date::timestamp with time zone
Run Code Online (Sandbox Code Playgroud)

我一直收到以下错误:

ERROR:  cannot cast type time with time zone to timestamp with time zone
Run Code Online (Sandbox Code Playgroud)

知道如何调整此查询才能工作吗?

Rom*_*kar 15

你可以这样做:

alter table key_request
alter column end_date type timestamp with time zone using date('20130101') + end_date;
Run Code Online (Sandbox Code Playgroud)

sql fiddle demo

  • 此解决方案比已接受的解决方案更好,因为您不必删除该列。它也对应于 PostgreSQL 教程:https://www.postgresqltutorial.com/postgresql-change-column-type/ (2认同)

Dec*_*n_K 3

我将通过一系列步骤来完成此操作

  1. 更改表,添加新end_date1time with time zone
  2. 将日期从end_date(旧)复制到end_date1
  3. 更改表,删除旧end_date
  4. 改变工作台,铰end_date1end_date