我需要将出生日期从 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;