开发避坑指南(11):Oracle DATE(7)到MySQL时间类型精度冲突解决方案

异常信息

[Err] [Dtf] 1426 - Too-big precision 7 specified for 'CREATE_TIME'. Maximum is 6.

异常背景

用Navicat的数据传输功能进行oracle的数据表迁移到到mysql时报错。

异常分析

oracle的DATE类型的长度是7位,而mysql的datetime类型的长度最多6位,所以无法导入。

解决办法

将oracle的DATE类型的时间字段修改为timestamp,并且长度修改为6,保存后即可传输成功。

备注:

Oracle的DATE数据类型存储日期和时间值,其精度固定为秒(second),不支持毫秒、微秒或更小的单位‌。DATE 字段的长度固定为 7 个字节。

若需更高精度(如毫秒或纳秒),应使用TIMESTAMP类型,其默认精度为微秒(6位),可扩展至纳秒(9位)‌。TIMESTAMP类型默认 ‌11 字节‌‌。

所以DATE(n) 和 TIMESTAMP(n) 类型的长度含义是不同‌的,DATE(n) 字段的n是指占用空间的大小; TIMESTAMP(n) 中的n是指小数秒的精度,如2023-04-01 12:00:00.123456,00.123456秒,小数秒精确到小数点后6位。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帧栈

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值