在 MySQL 中有两种存储工夫的数据类型 DATETIME
和 TIMESTAMP
,它们在数据库理论利用中,各有各的劣势和劣势。本文将具体详解两个数据类型的区别,以及用实战案例阐明它们的应用场景。
原文较长,完整版请跳转至源网站查看《在 MySQL 中 DATETIME 和 TIMESTAMP 工夫类型的区别及应用场景 – 实战案例解说 – 卡拉云》
一. DATETIME
和 TIMESTAMP
的相同点
- 两个数据类型存储工夫的格局统一。均为
YYYY-MM-DD HH:MM:SS
- 两个数据类型都蕴含「日期」和「工夫」局部。
- 两个数据类型都能够存储微秒的小数秒(秒后 6 位小数秒)
二. DATETIME
和 TIMESTAMP
的区别
1. 示意范畴
DATETIME
:1000-01-01 00:00:00.000000
到9999-12-31 23:59:59.999999
TIMESTAMP
:'1970-01-01 00:00:01.000000' UTC
到'2038-01-09 03:14:07.999999' UTC
2. 空间占用
TIMESTAMP
:占 4 个字节(小数秒 +3 个字节)DATETIME
:在 MySQL 5.6.4 之前,占 8 个字节,之后版本,占 5 个字节。(小数秒 +3 个字节)
3. 存入工夫是否会主动转换?
TIMESTAMP
:TIMESTAMP 的值是从「以后工夫」转换成 UTC 工夫,或者反过来转换。DATETIME
:不会做任何转换,也不会检测时区,你给什么数据,它存什么数据。
4. 应用 now()
存储以后工夫时,保留的理论值,是否与以后计算机工夫统一?
TIMESTAMP
:可能不统一。存储值会被转换成 UTC 工夫值再存入数据库。DATETIME
:与以后工夫是统一的。
5. 如果存入的是 NULL
时,两个类型如何存储?
TIMESTAMP
:会主动存储以后工夫(now()
)。DATETIME
:不会主动存储以后工夫,会间接存入NULL
值。
三. 应用场景辨析
在什么场景中,应用 DATETIME
或 TIMESTAMP
更适合?
TIMESTAMP
应用场景:计算飞机航行工夫
一架飞机,从中国北京腾飞,起飞在美国纽约,计算它从北京飞往纽约的航行工夫。飞机在北京工夫 2021-10-10 11:05:00 从北京腾飞,在纽约工夫 2021-10-10 09:50:00 起飞(JL8006)。
这个场景中,如果应用 TIMESTAMP
来存工夫,腾飞和起飞工夫的值,都会被转换成 UTC 工夫,所以它们间接相减即可取得后果。但如果应用 DATATIME
格局存工夫,还须要进行转换,才能够实现,容易出错。
DATATIME
应用场景:记录信息批改工夫
如果只是记录文件批改工夫,最初更新工夫这种不波及加减转换的状况,用 DATATIME
来存更间接,更不便,可读性高,不绕弯子,不容易出错。
四. TIMESTAMP
& DATATIME
实战案例
全文较长,查看实战案例,请拜访源网站持续浏览《在 MySQL 中 DATETIME 和 TIMESTAMP 工夫类型的区别及应用场景 – 实战案例解说 – 卡拉云》
实战案例解说了 TIMESTAMP
& DATATIME
在插入 NULL
、now()
、19970701171207
值的理论状况及批改时区对两种数据类型的影响。