Postgres 将列从没有时区的时间更改为 int

发布于 2024-11-09 15:29:50 字数 110 浏览 0 评论 0原文

我在将表列类型从没有时区的时间转换为整数时遇到问题。 这可能吗? 其中整数等于秒。

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花之痕靓丽 2024-11-16 15:29:50

这应该可以做到:

 ALTER TABLE your_table 
     ALTER COLUMN time TYPE integer USING 0;

ALTER COLUMN 通常仅在您想要保留该列中的数据时使用。在你的情况下,上述应该有效,但不会给你买任何东西。删除该列,然后添加一个类型为整数且默认值为 0 的新列也同样有效。

(顺便说一句:您不应使用 time 这样的保留字作为列名称)

编辑
如果您确实想转换现有数据,则可以使用以下命令:

 ALTER TABLE your_table 
     ALTER COLUMN time_column TYPE integer USING extract(epoch from time_column);

This should do it:

 ALTER TABLE your_table 
     ALTER COLUMN time TYPE integer USING 0;

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:

 ALTER TABLE your_table 
     ALTER COLUMN time_column TYPE integer USING extract(epoch from time_column);
木落 2024-11-16 15:29:50

跟进马的回答,您还可以在 using 部分添加表达式,例如:

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

Following up on the horse's answer, you can also add an expression in the using part, e.g.:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文