Postgres 将列从没有时区的时间更改为 int
我在将表列类型从没有时区的时间转换为整数时遇到问题。 这可能吗? 其中整数等于秒。
我正在使用 ALTER 表 exampleTable ALTER COLUMN time TYPE 整数。
I am having trouble converting a table column TYPE from time without time zone to integer.
Is that possible?
Where integer will be equal to seconds.
I am using ALTER table exampleTable ALTER COLUMN time TYPE integer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该可以做到:
ALTER COLUMN 通常仅在您想要保留该列中的数据时使用。在你的情况下,上述应该有效,但不会给你买任何东西。删除该列,然后添加一个类型为整数且默认值为 0 的新列也同样有效。
(顺便说一句:您不应使用
time
这样的保留字作为列名称)编辑
如果您确实想转换现有数据,则可以使用以下命令:
This should do it:
ALTER COLUMN is usually only used when you want to preserve the data in that column. In your case the above should work, but doesn't buy you anything. Dropping the column and then adding a new one with the type
integer
and a default value of 0 would be just as efficient.(Btw: you should not use a reserved word like
time
as a column name)Edit
If you do want to convert the existing data then you can use this:
跟进马的回答,您还可以在 using 部分添加表达式,例如:
http://www.postgresql.org/docs/current/static/sql-altertable.html
Following up on the horse's answer, you can also add an expression in the using part, e.g.:
http://www.postgresql.org/docs/current/static/sql-altertable.html