在 SQL/ORACLE 中将列的数据类型“varchar”更改为“DATE”

Atu*_*rma 3 sql database date oracle10g

我在oracle 10G中创建的数据库中有一个表。它包含“VARCHAR”类型的列,并将日期存储为以下格式的字符串 ->“dd-mon-yyyy”,例如:“12-aug-2008”。现在我想将此列的数据类型从 VARCHAR 更改为DATE。但是当我执行这个查询时->

ALTER TABLE sales_order
MODIFY COLUMN delivery_date DATE;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ORA-00905: 缺少关键字

我也尝试过:

ALTER TABLE sales_order
ALTER COLUMN delivery_date DATE;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ORA-01735: 无效的 ALTER TABLE 选项

但是,当我尝试添加具有 DATE 数据类型的新列时,它工作正常。例子 :

ALTER TABLE sales_order
ADD delivery DATE;
Run Code Online (Sandbox Code Playgroud)

那么,有人可以建议我一种在不删除列及其数据的情况下更改数据类型的方法吗?

pax*_*blo 5

这是第一个,稍作修改:

ALTER TABLE sales_order MODIFY (delivery_date DATE);
Run Code Online (Sandbox Code Playgroud)

但我不确定是否适用于那些特定的数据类型,并且根据当前数据,它也可能不起作用。

在这种情况下,您可能会发现有必要:

  • 创建日期类型的新列X
  • 基于旧列进行填充X(可能需要多次数据修复才能工作)。
  • 删除旧列。
  • 重命名X为旧列名称。