码迷,mamicode.com
首页 > 数据库 > 详细

oracle中时间戳转为Date类型的数据

时间:2018-12-28 17:46:34      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:user   date   to_date   class   size   rename   to_char   alter   新建   

问题描述:

  一个表中原本应该存放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;

 

oracle中时间戳转为Date类型的数据

标签:user   date   to_date   class   size   rename   to_char   alter   新建   

原文地址:https://www.cnblogs.com/songxianlu/p/10191626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!