7

我无法将名为time with time zoneend_date的表中的列更改为我的 Postgres 数据库中的列。我尝试使用以下代码:key_requesttimestamp

alter table key_request alter column end_date type timestamp with time zone using end_date::timestamp with time zone

我不断收到以下错误:

ERROR:  cannot cast type time with time zone to timestamp with time zone

知道如何调整此查询以使其正常工作吗?

4

3 回答 3

19

你可以这样做:

alter table key_request
alter column end_date type timestamp with time zone using date('20130101') + end_date;

sql fiddle demo

于 2013-08-15T15:15:59.397 回答
2

我将通过一系列步骤做到这一点

  1. 更改表格,添加一个新end_date1time with time zone
  2. 将日期从end_date(旧)复制到end_date1
  3. 更改表格,删除旧end_date
  4. 改变表,end_date1扩孔end_date
于 2013-08-15T14:36:28.847 回答
0

从 更改java.sql.Datejava.util.Date

ALTER TABLE key_request ALTER COLUMN end_date TYPE timestamp without time zone;

如果您有与该表相关的依赖视图

  1. 删除视图
  2. 更改列类型
  3. 重新创建视图

在类型迁移中来自 java/hibernate 方法的解决方案。

  • java.sql.Date被翻译成date
  • java.util.Date被翻译成timestamp without time zone
于 2016-07-29T08:57:30.153 回答