将不同格式列的String数据类型的日期转换为PostgreSQL中的日期数据类型

Posted

技术标签:

【中文标题】将不同格式列的String数据类型的日期转换为PostgreSQL中的日期数据类型【英文标题】:Convert dates in String data type with different formats column to Date data type in PostgreSQL 【发布时间】:2020-06-22 19:48:44 【问题描述】:

我有一个包含日期的 String ( varchar ) 类型的数据库表。这些日期采用以下格式(示例):

15-06-2018
15/06/2018
15-Jun-2018
15 June 2018
June 15, 2018
June, 15, 2018

是否有任何查询可用于使用 PostgreSQL 查询从中获取 Date 数据类型值?

感谢您的帮助。

【问题讨论】:

你有机会修复这个损坏的数据模型吗? 【参考方案1】:

您可以使用大写表达式:

(case when col ~ '^[0-9]2-[0-9]2-[0-9]4$' then to_date(col, 'DD-MM-YYYY')
      when col ~ '^[0-9]2/[0-9]2/[0-9]4$' then to_date(col, 'DD/MM/YYYY')
      when col ~ '^[0-9]2-[A-Za-z]3-[0-9]4$' then to_date(col, 'DD Mon YYYY')
      . . .
 end) as the_date
  
  

【讨论】:

以上是关于将不同格式列的String数据类型的日期转换为PostgreSQL中的日期数据类型的主要内容,如果未能解决你的问题,请参考以下文章

spring类型转换器(三)

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何正确地将数据帧的所有日期时间列转换为 iso 格式

怎么将string类型的日期转换为date

将Dataset中的列类型转换为python中具有特定格式的日期时间类型时出错

怎么将long类型转换成date