将varchar转换为日期PostgreSQL
我需要将varchar类型的出生日期转换为date。 该表称为“客户”,该列称为“出生日期” 该列包含日期格式为dd.MM.YYYY和dd/MM/YYYY的条目,我希望更改该列的每个条目 我现在掌握的代码是:将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”,那么该代码就可以工作了。有人能帮我添加最后一段代码吗?这段代码也使用了我上面提
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;
如果有两种以上的格式,则需要扩展测试,以找出每个值使用的格式