在 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 中的 OUTPUT 参数