Изменить тип столбца с varchar на отметку времени

У меня есть таблица, которая определяется следующим образом:

CREATE TABLE session_requests
(
  id character varying(255) NOT NULL,
  authorization_enc character varying(255),
  auto_close integer,
  date_created character varying(255) DEFAULT '1970-01-01 01:00:00'::character varying,,
....
)

Я пытаюсь сделать

alter table session_requests alter column date_created type timestamp using date_created::timestamp;

ошибка, которую я получаю,

ERROR:  default for column "date_created" cannot be cast automatically to type timestamp

У кого-нибудь есть предложения?

1 ответ

Решение

Сделай это за одну транзакцию. Вы даже можете сделать это в одном утверждении:

ALTER TABLE session_requests
  ALTER date_created DROP DEFAULT
 ,ALTER date_created type timestamp USING date_created::timestamp
 ,ALTER date_created SET DEFAULT '1970-01-01 01:00:00'::timestamp;

SQL Fiddle.

В сторону: character varying(255) почти всегда плохой (бессмысленный) выбор в Postgres. Больше:

Другие вопросы по тегам