1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00
This commit is contained in:
TommyMerlin 2021-06-18 17:18:13 +08:00
parent c0bdcfaee8
commit eae908533e

View File

@ -1,4 +1,4 @@
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现这个时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。
这是一篇短小精悍的文章,仔细阅读一定能学到不少东西!
@ -9,7 +9,7 @@
但是,这是不正确的做法,主要会有下面两个问题:
1. 字符串占用的空间更大!
2. 字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
2. 字符串存储的日期效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
### 2.Datetime 和 Timestamp 之间抉择
@ -17,7 +17,7 @@ Datetime 和 Timestamp 是 MySQL 提供的两种比较相似的保存时间的
**通常我们都会首选 Timestamp。** 下面说一下为什么这样做!
#### 2.1 DateTime 类型没有时区信息
#### 2.1 DateTime 类型没有时区信息
**DateTime 类型是没有时区信息的(时区无关)** DateTime 类型保存的时间都是当前会话所设置的时区对应的时间。这样就会有什么问题呢?当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。不要小看这个问题,很多系统就是因为这个问题闹出了很多笑话。
@ -106,7 +106,7 @@ Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/FhRGUVHFK0ujRPNA75f6CuOXQHTE.jpeg)
可以看出 5.6.4 之后的 MySQL 多出了一个需要 0 3 字节的小数位。Datatime 和 Timestamp 会有几种不同的存储空间占用。
可以看出 5.6.4 之后的 MySQL 多出了一个需要 0 3 字节的小数位。DateTime 和 Timestamp 会有几种不同的存储空间占用。
为了方便,本文我们还是默认 Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。