在 PostgreSQL 中将数据类型“Varchar”更改为“TimeStamp”

Posted

技术标签:

【中文标题】在 PostgreSQL 中将数据类型“Varchar”更改为“TimeStamp”【英文标题】:Changing data type "Varchar" to "TimeStamp" in PostgreSQL 【发布时间】:2012-11-06 13:41:05 【问题描述】:

我的数据集包含一列,其中包含“varchar”数据类型的日期和时间,如下所示:

2009 年 4 月 23 日 11:34:01

上述列的数据类型是varchar,我想问一下如何将数据类型更改为“时间戳”。

【问题讨论】:

【参考方案1】:

我会在表中添加一个新的目标类型的 NULLable 列。

您可以尝试根据数据的简单解析来填充列数据库。

然后您可以运行 SELECT 将原始日期字符串与新日期字符串进行比较,但也可以使用输出格式化程序函数,以便字符串应该是一致的。然后让 SQL 使用 HAVING 子句比较这两个值。

一旦您有了能够转换现有数据的解决方案。

你应该努力改变策略。这可能需要更改软件。这可以通过首先确保 INSERT 和 UPDATE 将数据保存在 BOTH 列中的所有数据来完成。

然后您对所有现有数据运行转换过程。

此时对数据库的所有更改都应始终保持旧列和新列。也许您需要审核/运行系统一段时间以确保所有内容都被捕获,因为您现在可以随时重新运行比较/验证步骤。

然后您可以处理 SELECT 用例。然后最后实际删除 VARCHAR 列。

所有这一切的重点是一个受控的逐步过程,其中在每次更改之间都有回滚选项和测试。

【讨论】:

以上是关于在 PostgreSQL 中将数据类型“Varchar”更改为“TimeStamp”的主要内容,如果未能解决你的问题,请参考以下文章

如何在PostgreSQL中将空转换为null?

复合数组类型作为 PostgreSQL 中的 OUTPUT 参数

收到 org.postgresql.util.PGobject 类型的对象

如何在postgresql函数中转换输入参数类型

在java中将数据库从MySQL更改为PostgreSQL

如何在windows的“omnidb”中将csv文件数据导入postgresql