将日期转换为Unix时间戳整数的POSTGRESQL方法

3
我有一个名为matches的表格,其中有一列名为deleted_date,其类型为日期,因此其值看起来像现在这样:2020-12-30。我想将此列的类型从日期更改为整数,以便我可以存储Unix时间戳。

我正在尝试通过运行以下命令来实现:

ALTER TABLE matches ALTER COLUMN deleted_date TYPE INT USING deleted_date::INT;

但是运行这个命令会给我报错:
 error: cannot cast type date to integer

有没有办法告诉POSTGRESQL只需用一个新的空的“null”整数变量替换任何已删除的日期值?


这个回答解决了你的问题吗?在PostgreSQL中将日期转换为整数 - undefined
1
请注意,“它的值看起来像”与数据类型或存储无关。这是一个显示任务,您应该始终只在应用程序的显示时关注此任务。 - undefined
为什么?整数是日期或时间戳的最糟糕的数据类型之一。 - undefined
2个回答

2

如果您想存储时间戳(日期+时间),您应该将列转换为timestamp类型,甚至更好的是timestamptz类型 - 不要使用整数来存储时间戳。

alter table matches alter deleted_date type timestamp 

1
你可以尝试以下的修改语句来满足你的需求:
ALTER TABLE matches ALTER COLUMN deleted_date TYPE INT USING extract(epoch from deleted_date)::INT;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接