将 varchar 转换为日期 PostgreSQL



我需要将出生日期从 varchar 类型转换为日期。 该表称为"客户",列称为"date_of_birth"。

该列包含日期格式为 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(。

谢谢你的时间!

如果您只需要处理提到的这两种格式,则可以使用 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;

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

如果正确设置datestyle,则类型输入函数将自动执行此操作:

SET datestyle = ISO, DMY;
ALTER TABLE xxx
ALTER date_of_birth TYPE date;

最新更新