为什么DB的设计中要使用Long来替换掉Date类型?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jnshu_it/article/details/84729973

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【为什么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,223,372,036,854,775,807)之间的整数,它占用了八个字节的存储空间。

(3)常见问题

明明Date类型就该表示时间,为何要用bigint替代呢?

其实这个问题,网上意见也并不统一

一部分人的观点:

储存什么类型的,就该用什么类型

在这里就是:既然要储存时间,为何不用时间的类型呢?

(4)解决方案

1. 因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦

2. 其实使用BigInt也能较为清晰的表示时间

3. 大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,BigInt非常方便做减法而不用转化

(5)编码实战

(6)拓展思考

(7)参考文献

【参考一】https://blog.csdn.net/boss_way/article/details/78358615

(8)更多讨论

Q1:基于数组的数据结构常见的有哪些?

A1:java中以数组为基础的最常见就是ArrayList了,一般查询操作比较频繁,并且元素可重复,并且不需要以key-value形式存储的,都会选择用ArrayList存储数据。

Q2:什么时候适合用数组

A2:当索引是有意义的,比如一个班的学生,学号是对应一个学生(当然学号不能太大,比如1,2,3...)这时候用数组比较适合。

Q3:除了数组这种线性数据结构,还有哪些线性的数据结构?

A3:另外还有链表,栈,队列。

(9)鸣谢

(10)结束语

今天的分享就到这里啦,欢迎大家点赞、留言、转发、抛砖~

PPT链接 视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

猜你喜欢

转载自blog.csdn.net/jnshu_it/article/details/84729973
今日推荐