我无法将表列TYPE从没有时区的时间转换为整数。 那可能吗? 其中整数将等于秒。
我正在使用ALTER表exampleTable ALTER COLUMN时间TYPE整数。
答案 0 :(得分:6)
这应该这样做:
ALTER TABLE your_table
ALTER COLUMN time TYPE integer USING 0;
ALTER COLUMN通常仅在您要保留该列中的数据时使用。在你的情况下,上述应该工作,但不会给你买任何东西。删除列然后添加类型为integer
且默认值为0的新列将同样有效。
(顺便说一下:你不应该使用像time
这样的保留字作为列名)
修改强>
如果您确实要转换现有数据,则可以使用:
ALTER TABLE your_table
ALTER COLUMN time_column TYPE integer USING extract(epoch from time_column);
答案 1 :(得分:3)
跟进马的答案,您还可以在使用部分添加表达式,例如:
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