问题描述
|
我无法将表列TYPE从无时区的时间转换为整数。
那可能吗?
其中,整数将等于秒。
我正在使用ALTER表exampleTableALTER COLUMN time TYPE整数。
解决方法
应该这样做:
ALTER TABLE your_table
ALTER COLUMN time TYPE integer USING 0;
通常仅在要保留该列中的数据时才使用ALTER COLUMN。在您的情况下,上面的方法应该有效,但不会为您带来任何好处。删除该列,然后添加类型为“ 1”且默认值为0的新列将同样有效。
(顺便说一句:您不应使用诸如“ 2”之类的保留字作为列名)
编辑
如果确实要转换现有数据,则可以使用以下方法:
ALTER TABLE your_table
ALTER COLUMN time_column TYPE integer USING extract(epoch from time_column);
,遵循马的答案,您还可以在使用部分添加一个表达式,例如:
ALTER TABLE your_table
ALTER COLUMN time TYPE integer USING (
extract(\'hours\' from time) * 3600 +
extract(\'minutes\' from time) * 60 +
extract(\'seconds\' from time)
);
http://www.postgresql.org/docs/current/static/sql-altertable.html