如何将列数据迁移到新数据类型

时间:2015-11-19 09:26:48

标签: oracle

我需要将表的列迁移到另一种具有一些修改的数据类型。鉴于:表' USER'使用列' ORDER_TIME' (日期时间格式)。需要将列类型更改为NUMBER,将该时间转换为分钟(例如,上午8:00 = 480分钟)并存储新值。据我所知,我需要创建具有所需NUMBER数据类型的新列,迭代所有记录,进行一些重新计算,存储新值,删除旧列并将新列重命名为实际名称。所以,基本上,算法是:

ALTER TABLE USER ADD ORDER_TIME_MINS NUMBER(4) NULL;

迭代和重新计算

ALTER TABLE USER 
DROP COLUMN ORDER_TIME
RENAME COLUMN ORDER_TIME_MINS TO ORDER_TIME;

您能否建议我阅读一下迭代的外观?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样:

update tablename
set columnName = to_number(to_char(to_date(yourDateColumn,'hh24:mi:ss'),'sssss'))/60

如果您的时间是晚上08:00,那么就像

一样
update tablename
set columnName =TO_NUMBER(TO_CHAR(TO_DATE('08:00 AM','HH:MI AM'),'SSSSS'))/60 

你所展示的其他步骤,即滴剂和肾素都很好。

相关问题