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

java分享会

分享人:蒋新益

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

先介绍下背景

DB是什么?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

2.知识剖析

先来看看今天的主角,两个类型

bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。

DATE 用于表示 年月日,取值范围:1000-01-01~9999-12-31。

3.常见问题

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

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

一部分人的观点:

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

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

4.解决方案

解决方案

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

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

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

5.编码实战

6.扩展思考

众所周知这里的讨论基于MySql,那么请问师兄师姐,在实际项目中,NoSql类型的数据库用的多么?

7.参考文献

http://billauer.co.il/blog/2009/03/mysql-datetime-epoch-unix-time/

https://stackoverflow.com/questions/7817724/is-it-a-good-idea-to-use-string-data-type-for-dates-in-mysql-instead-of-using-da?rq=1

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : 龚剑飞