2013-08-15 2 views
3

У меня возникла проблема с изменением столбца с именем end_date в таблице с именем key_request со времени с часовым поясом до timestamp в моей базе данных Postgres. Я попытался, используя следующий код:изменить колонку от времени с часовым поясом до отметки времени

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 

Любая идея, как я могу настроить этот запрос работать?

+0

Я думаю, что вы написали это неправильно, вы хотите конвертировать 'метки времени без timezone' в' метку времени с timezone', верно? – MatheusOl

+0

nope столбец времени с часовым поясом, и я хочу изменить временную отметку с часовым поясом – wilty

+0

OH! Извините ... Теперь я понял, я все время читал 'timestamp', а не' time' ... lol ... – MatheusOl

ответ

1

Я woul сделать это в серии шагов

  1. Alter таблицу, добавив новый столбец end_date1 в time with time zone
  2. Скопируйте даты end_date (старый) в end_date1
  3. изменить таблицу, отбрасывание старого end_date столбец
  4. Переверните стол, развернутый end_date1 до end_date
+0

, который отлично работает, но есть ли способ, чтобы я мог разместить этот новый столбец в позиции старый столбец без удаления столбцов между ними? – wilty

+1

postgresql не поддерживает изменение порядка столбцов в существующей таблице. Если вы «ДЕЙСТВИТЕЛЬНО» нуждаетесь в том, чтобы она находилась в определенной позиции (и это не действительная причина, почему вам это нужно), вам нужно будет воссоздать всю таблицу. –

14

вы можете сделать что-то вроде этого:

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

sql fiddle demo

0

Переход от java.sql.Date к java.util.Date

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

Если у вас есть зависимые виды, которые относятся к этой таблице

  1. просмотров падения
  2. типа изменения столбец
  3. воссоздать вид на

раствор, отбираемый из Java/спящий режим подхода в то время как в миграции типа.

  • java.sql.Date переводится на date
  • java.util.Date переводится на timestamp without time zone
Смежные вопросы