将varchar转换为日期PostgreSQL

将varchar转换为日期PostgreSQL,sql,postgresql,date,type-conversion,Sql,Postgresql,Date,Type Conversion,我需要将varchar类型的出生日期转换为date。 该表称为“客户”,该列称为“出生日期” 该列包含日期格式为dd.MM.YYYY和dd/MM/YYYY的条目,我希望更改该列的每个条目 我现在掌握的代码是: ALTER COLUMN date_of_birth type date USING to_date(date_of_birth, 'dd.MM.YYYY'); 如果现有条目的格式都是“dd.MM.YYYY”,那么该代码就可以工作了。有人能帮我添加最后一段代码吗?这段代码也使用了我上面提

我需要将varchar类型的出生日期转换为date。 该表称为“客户”,该列称为“出生日期”

该列包含日期格式为dd.MM.YYYY和dd/MM/YYYY的条目,我希望更改该列的每个条目

我现在掌握的代码是:

ALTER COLUMN date_of_birth type date USING to_date(date_of_birth, 'dd.MM.YYYY');
如果现有条目的格式都是“dd.MM.YYYY”,那么该代码就可以工作了。有人能帮我添加最后一段代码吗?这段代码也使用了我上面提到的其他日期格式(dd/MM/YYYY)


感谢您抽出时间!

如果您适当设置了
datestyle
,类型输入功能将自动执行以下操作:

SET datestyle = ISO, DMY;

ALTER TABLE xxx
   ALTER date_of_birth TYPE date;

如果您适当地设置了
datestyle
,则类型输入功能将自动执行以下操作:

SET datestyle = ISO, DMY;

ALTER TABLE xxx
   ALTER date_of_birth TYPE date;

如果只需要处理上述两种格式,可以使用CASE表达式:

ALTER TABLE your_table
  ALTER COLUMN date_of_birth type date 
    USING case 
            when date_of_birth like '%/%' then to_date(date_of_birth, 'dd/MM/YYYY')
            else to_date(date_of_birth, 'dd.MM.YYYY')
          end;

如果有两种以上的格式,则需要扩展测试以找出每个值使用的格式。

如果只需要处理上述两种格式,则可以使用CASE表达式:

ALTER TABLE your_table
  ALTER COLUMN date_of_birth type date 
    USING case 
            when date_of_birth like '%/%' then to_date(date_of_birth, 'dd/MM/YYYY')
            else to_date(date_of_birth, 'dd.MM.YYYY')
          end;
如果有两种以上的格式,则需要扩展测试,以找出每个值使用的格式