在PostgreSQL中将列类型从字符变化到时区,没有时区

Yuj*_* Wu 5 postgresql datetime types ruby-on-rails-3

在rails中我创建了一个名为open_time的字符串列,但后来我意识到我应该使用datetime类型.我做到了

change_column :polls, :open_time, :datetime
Run Code Online (Sandbox Code Playgroud)

但它说:

PG::Error: ERROR:  column "open_time" cannot be cast to type timestamp without time zone
: ALTER TABLE "polls" ALTER COLUMN "open_time" TYPE timestamp
Run Code Online (Sandbox Code Playgroud)

如果我只是删除字符串列并添加新的datetime列,我将丢失存储在字符串列中的数据.或者,在PostgreSQL中我添加列:

 ALTER TABLE polls ADD COLUMN published_time timestamp;
Run Code Online (Sandbox Code Playgroud)

然后我试图从字符串列获取数据,如:

UPDATE polls SET published_time = strToTimeStamp(open_time);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是有没有我可以使用的功能,因为strToTimeStamp它可以将字符变化类型转换为时间戳而没有时区类型?

Erw*_*ter 5

..是否有任何我可以用作strToTimeStamp的函数,可以将字符变化类型转换为时区而无时区类型?

使用to_timestamp()改变柱到位的数据类型.

ALTER TABLE tbl ALTER COLUMN col TYPE timestamp
USING to_timestamp(col, '<your pattern here>');
Run Code Online (Sandbox Code Playgroud)

在这些非常相似的问题下更多:
更改到目前为止的字符字段
Cast varchar类型到目前为止