问题描述:

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

最新文章

  1. C#正则表达式Regex类的用法
  2. Open Cascade DataExchange DXF
  3. 内存管理_JAVA内存管理
  4. Java运行环境的配置
  5. spotlight监控工具使用
  6. 使用LinkedList实现Stack与Queue
  7. MySQL查询过程中出现lost connection to mysql server during query 的解决办法
  8. 【HDOJ 1215】七夕节
  9. ubuntu日志文件管理
  10. python操作Excel-写/改/读
  11. django之模板继承以和模板导入
  12. 静态分析Android程序
  13. 最课程学员启示录:这么PL的小姐姐你要不要
  14. libgdx学习记录23——图片移动选择
  15. Ubuntu jdk 8 与 6 切换 (安装与配置)
  16. mysql查询语句 和 多表关联查询 以及 子查询
  17. ad9 的快捷方式
  18. 排序(C语言实现)
  19. 1、Redis简介、安装和基础入门
  20. 转:Linux下which、whereis、locate、find 命令的区别

热门文章

  1. Axios 使用说明
  2. leecode刷题(6)-- 两个数组的交集II
  3. LNMP之Php的安装配置
  4. vue的生命周期钩子函数
  5. 如何理解java采用Unicode编码
  6. VS2019和net core 3.0(整理不全,但是孰能生巧)
  7. 当AVPlayer在被释放之后,Player一直监听的时间没有被移除,提示错误的解决办法
  8. js 任意元素解绑任意事件的兼容代码
  9. JDK 5 ~ 10 新特性倾情整理!
  10. struts2学习笔记(二)—— struts2的架构【转】