乐趣区

关于mysql:在-MySQL-中-DATETIME-和-TIMESTAMP-时间类型的区别及使用场景-实战案例讲解

在 MySQL 中有两种存储工夫的数据类型 DATETIMETIMESTAMP,它们在数据库理论利用中,各有各的劣势和劣势。本文将具体详解两个数据类型的区别,以及用实战案例阐明它们的应用场景。

原文较长,完整版请跳转至源网站查看《在 MySQL 中 DATETIME 和 TIMESTAMP 工夫类型的区别及应用场景 – 实战案例解说 – 卡拉云》

一. DATETIMETIMESTAMP 的相同点

  1. 两个数据类型存储工夫的格局统一。均为 YYYY-MM-DD HH:MM:SS
  2. 两个数据类型都蕴含「日期」和「工夫」局部。
  3. 两个数据类型都能够存储微秒的小数秒(秒后 6 位小数秒)

二. DATETIMETIMESTAMP 的区别

1. 示意范畴

  • DATETIME1000-01-01 00:00:00.0000009999-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 值。

三. 应用场景辨析

在什么场景中,应用 DATETIMETIMESTAMP 更适合?

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 在插入 NULLnow()19970701171207 值的理论状况及批改时区对两种数据类型的影响。

退出移动版