这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【为什么DB的设计中要使用Long来替换掉Date类型?】
【修真院java 小课堂】为什么DB的设计中要使用Long来替换掉Date类型?
大家好,我是IT修真院深圳分院第12期的学员,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务1的深度思考-为什么DB的设计中要用Long来替代Date类型?
(1)背景介绍
在对数据库中的记录进行操作的时候,需要牵涉到对时间数据的处理,如create_at,update_at等字段,数据库中有专门用于存储时间的类型,date,还可以将类型设置为long类型,那么两者的有何差异?
(2)知识剖析
MySQL中的表示时间的类型
date:日期,占用三个字节,1000-01-01——9999-12-31
datetime:日期+时间,1000-01-01 00:00:00” 到“9999-12-31 23:59:59,占用8个字节,datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。
timestamp:日期+时间,占用4个字节,“19700101080001——20380119111407,timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。
MySQL中的bigint类型
bignit,表示从-2^63到2^63-1(即从-9,223,372,036,854,775,808到 9,807)之间的整数,它占用了八个字节的存储空间。
(3)常见问题
明明Date类型就该表示时间,为何要用bigint替代呢?
其实这个问题,网上意见也并不统一
一部分人的观点:
储存什么类型的,就该用什么类型
在这里就是:既然要储存时间,为何不用时间的类型呢?
(4)解决方案
1. 因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦
2. 其实使用BigInt也能较为清晰的表示时间
3. 大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,BigInt非常方便做减法而不用转化
(5)编码实战
(6)拓展思考
(7)参考文献
(8)更多讨论
Q1:基于数组的数据结构常见的有哪些?
A1:java中以数组为基础的最常见就是ArrayList了,一般查询操作比较频繁,并且元素可重复,并且不需要以key-value形式存储的,都会选择用ArrayList存储数据。
Q2:什么时候适合用数组
A2:当索引是有意义的,比如一个班的学生,学号是对应一个学生(当然学号不能太大,比如1,2,3...)这时候用数组比较适合。
Q3:除了数组这种线性数据结构,还有哪些线性的数据结构?
A3:另外还有链表,栈,队列。
(9)鸣谢
(10)结束语
今天的分享就到这里啦,欢迎大家点赞、留言、转发、抛砖~
更多内容,可以加入IT交流群565734203与大家一起讨论交流
这里是技能树·IT修真院:,初学者转行到互联网的聚集地
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。