alter column from time with time zone to timestamp

痴心易碎 提交于 2019-12-07 10:22:03

问题


I am having trouble changing a column called end_date in a table called key_request from time with time zone to timestamp in my Postgres database . I have tried using the following code:

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

I keep getting the following error:

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

Any idea of how I can adjust this query to work?


回答1:


I woul do this in a series of steps

  1. Alter the table, adding a new column end_date1 as time with time zone
  2. Copy the date from end_date(old) to end_date1
  3. Alter the table, droping the old end_date column
  4. Alter the table,reaming end_date1 to end_date



回答2:


you can do something like this:

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

sql fiddle demo




回答3:


Changing from java.sql.Date to java.util.Date

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

If you have dependant views that relate to that table

  1. drop views
  2. change column type
  3. recreate views

Solution coming from a java/hibernate approach while in type migration.

  • java.sql.Date is translated to date
  • java.util.Date is translated to timestamp without time zone


来源:https://stackoverflow.com/questions/18254917/alter-column-from-time-with-time-zone-to-timestamp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!