首页 > 解决方案 > PostgreSQL。如何将现有列中的 varchar 格式日期转换为日期格式日期

问题描述

我对 PostgreSQL 很陌生。我查看了其他现有线程、文档和各种谷歌搜索,但仍然无法完全理解是否可以将列date中实际为字符串的现有值转换varchar为实际日期格式。

该列已命名datelaid并具有varchar数据类型。该表名为init_sa_mains_1

日期:

" "
"01-12-2011"
"01-12-2011"
" "
"01-12-2011"
" "

我尝试如下更改列的数据类型,但没有成功:

ALTER TABLE init_sa_mains_1
    ALTER COLUMN datelaid TYPE date USING datelaid::date;

ALTER TABLE init_sa_mains_1
   CAST(init_sa_mains_1.datelaid as date);

ALTER TABLE init_sa_mains_1 
  ALTER COLUMN datelaid USING datelaid::date;

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(datelaid, 'DD-MM-YYYY');

有人可以就可能的解决方案提出建议吗?

标签: postgresqltype-conversionsqldatatypes

解决方案


您将需要处理空字符串,因为它们不能像那样转换。但是您可以将它们转换为 NULL 值:

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(nullif(trim(datelaid),''), 'DD-MM-YYYY');

推荐阅读