oracle中时间戳转为Date类型的数据
2024-08-30 21:01:55
问题描述:
一个表中原本应该存放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;
最新文章
- C#正则表达式Regex类的用法
- Open Cascade DataExchange DXF
- 内存管理_JAVA内存管理
- Java运行环境的配置
- spotlight监控工具使用
- 使用LinkedList实现Stack与Queue
- MySQL查询过程中出现lost connection to mysql server during query 的解决办法
- 【HDOJ 1215】七夕节
- ubuntu日志文件管理
- python操作Excel-写/改/读
- django之模板继承以和模板导入
- 静态分析Android程序
- 最课程学员启示录:这么PL的小姐姐你要不要
- libgdx学习记录23——图片移动选择
- Ubuntu jdk 8 与 6 切换 (安装与配置)
- mysql查询语句 和 多表关联查询 以及 子查询
- ad9 的快捷方式
- 排序(C语言实现)
- 1、Redis简介、安装和基础入门
- 转:Linux下which、whereis、locate、find 命令的区别