百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 对于mysql中的工夫进位题目的解说
分享文章到:

对于mysql中的工夫进位题目的解说

发布时间:09/01 来源:未知 浏览: 关键词:

mysql更新到5.6.4 之后 , 新增了一个叫factional seconds的特性 , 可以记载时间的毫秒值。但是当前的数据库是不记载毫秒值的 , 所以会发生一个java中时间的Milliseconds超越500就会四舍五入的问题。

下面是一个例子,演示了时间是怎样进位的。第一创立一张表:

CREATE TABLE test_time (
 time_sec   datetime,
 time_millis datetime(3),
 time_micros datetime(6),
 stamp_sec  timestamp,
 stamp_millis timestamp(3),
 stamp_micros timestamp(6)
);

有的小伙伴大概不知道 datetime 和 timestamp 定义时是可以带精度的,精度值为 0~6,表示保存几位小数,默许值为 0。明显保存 3 位可看作精度为毫秒,保存 6 位可看作精度为微秒。

(在线学习视频教程引荐:mysql视频教程)

然后我们插入一笔记录:

INSERT INTO test_time
( time_sec, time_millis, time_micros,
 stamp_sec, stamp_millis, stamp_micros )
VALUES(
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654'
);

然后再做一次 select * from test_time 查询就能看到下面的结果:

time_sec             |time_millis            |time_micros               |stamp_sec            |stamp_millis           |stamp_micros              |
---------------------|-----------------------|--------------------------|---------------------|-----------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|

可以看到 time_sec 和 stamp_sec 在数据库中的秒值都被进位了,time_millis 和 stamp_millis 的毫秒值都被进位了。

因而可知,要幸免这样的误差,有两个手段:

1、定义字段的时候使用 datetime(6) 或 timestamp(6);

2、定义字段时不带精度,但在将时间存入数据库此前,要将毫秒值截取掉。

相关文章教程引荐:mysql教程

以上就是关于mysql中的时间进位问题的讲解的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有153人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板