如何解决Postgres将列从无时区的时间更改为int
| 我无法将表列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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。