臻享优惠价:最高返 500 抵扣券 → 查看活动!>>>

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别? - 我爱模板网

两种数据类型都以“YYYY-MM-DD HH:MM:SS”格式存储数据,并包含日期和时间。尽管有这些相似之处,但它们还是有以下区别 -

  • 范围 - 日期时间数据类型支持 1000 之间的日期和时间-01-01 00:00:00 和 9999-12-31 23:59:59。但时间戳数据类型支持“1970-01-01 00:00:01”到“2038-01-19 08:44:07”之间的日期和时间。
  • 大小 - 日期时间需要 5 个字节以及 3 个附加字节用于小数秒的数据存储。另一方面,时间戳数据类型需要 4 个字节以及 3 个附加字节用于小数秒的数据存储。但在 MySQL 5.6.4 之前,DateTime 需要 8 个字节以及 3 个额外字节用于小数秒的数据存储。
  • 从一个时区到另一个时区的转换 - 实际上在 MySQL5+ 中,时间戳值从当前时间转换为 UTC,反之亦然,而日期时间不进行任何转换。
  • 索引 - 可以对时间戳数据进行索引,但无法对日期时间数据进行索引。
  • 索引 - 可以对时间戳数据进行索引,但不能对日期时间数据进行索引。 li>
  • 查询缓存 - 可以缓存时间戳数据类型的查询,但不能缓存日期时间数据类型的查询。

以上是 DATETIME 之间的一些主要区别和 TIMESTAMP 数据类型,以下示例将演示它 -

示例

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.04 sec)

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> Create table test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.06 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
豆包可以帮你高效完成AI问答、AI对话、提供软件相关教程以及解决生活中遇到的各种疑难杂症,还能帮助你进行AI写作、AI绘画等等,提高你的工作学习效率。
!
你也想出现在这里?立即 联系我们吧!
信息
个人中心
购物车
优惠劵
今日签到
搜索