问题描述:
一个表中原本应该存放date类型的数据,但是不知道之前哪位大仙把两个字段的类型建成了NUMBER类型的了,这样在后台看时间肯定不方便。现在需要改成date类型,但是现在库中是有数据的,不能直接从NUMBER改为DATE。所以需要建立先创建两个DATE类型的临时字段,然后把对应字段的数据转换为Date类型的数据之后存到新字段上面,最后删除老字段,将新字段改名为老字段。
一、新建两个临时字段
ALTER TABLE CS_USER ADD (CREATEDATE1 DATE,OPERATE_TIME1 DATE);
二、转换copy数据(关键)
先将时间戳转换为char类型的时间,最后再转换为date类型的时间。
update CS_USER set CREATEDATE1=TO_DATE( (TO_CHAR(CREATEDATE / (1000 * 60 * 60 * 24) + TO_DATE(‘1970-01-01 08:00:00‘, ‘YYYY-MM-DD HH:MI:SS‘), ‘YYYY-MM-DD HH:MI:SS‘)), ‘YYYY-MM-DD HH:MI:SS‘ ), OPERATE_TIME1=TO_DATE( (TO_CHAR(OPERATE_TIME / (1000 * 60 * 60 * 24) + TO_DATE(‘1970-01-01 08:00:00‘, ‘YYYY-MM-DD HH:MI:SS‘), ‘YYYY-MM-DD HH:MI:SS‘)), ‘YYYY-MM-DD HH:MI:SS‘ )
三、删除老字段,rename新字段
--清空老字段数据(删除前需要先清空) UPDATE CS_USER SET CREATEDATE=‘‘,OPERATE_TIME=‘‘; --删除老字段 ALTER TABLE CS_USER drop (CREATEDATE,OPERATE_TIME); --rename新字段 ALTER TABLE CS_USER RENAME COLUMN CREATEDATE1 TO CREATEDATE; ALTER TABLE CS_USER RENAME COLUMN OPERATE_TIME1 to OPERATE_TIME;
原文地址:https://www.cnblogs.com/songxianlu/p/10191626.html
时间: 2024-11-10 10:48:38