将varchar转换为date postgresql

dvtswwa3  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(761)

我需要将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)。
谢谢你抽出时间!

mspsb9vt

mspsb9vt1#

如果只需要处理上述两种格式,可以使用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;

如果您的格式多于这两种,则需要扩展测试以找出每个值使用哪种格式。

9fkzdhlc

9fkzdhlc2#

如果你设置 datestyle 相应地,type input函数将自动执行以下操作:

SET datestyle = ISO, DMY;

ALTER TABLE xxx
   ALTER date_of_birth TYPE date;

相关问题