MySQL DATETIME和TIMESTAMP数据类型有什么区别?
两种数据类型均以“ YYYY-MM-DD HH:MM:SS”格式存储数据,并包括日期和时间。尽管有这些相似之处,但它们仍具有以下差异-
范围-Datetime数据类型支持日期以及时间,范围介于1000-01-01 00:00:00和9999-12-31 23:59:59之间。但是timestamp数据类型支持日期以及时间在1970-01-01 00:00:01到2038-01-19 08:44:07之间的范围。
大小-日期时间需要5个字节以及另外3个字节来存储小数秒的数据。另一方面,timestamp数据类型需要4个字节以及3个其他字节来存储小数秒的数据。但是在MySQL 5.6.4之前,DateTime需要8个字节以及3个额外的字节来存储小数秒的数据。
从一个时区转换为另一个时区-实际上,在MySQL5 +中,时间戳值从当前时间转换为UTC,反之亦然,而datetime不进行任何转换。
索引-可以对时间戳数据进行索引,但无法对日期时间数据进行索引。
查询的缓存-具有时间戳数据类型的查询可以被缓存,但是具有日期时间数据类型的查询不能被缓存。
上面是DATETIME和TIMESTAMP数据类型之间的一些主要区别,下面的示例将演示它-
示例
mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
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);
mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
mysql> Select * from test_timestamp;
+---------------------+
| time |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)
现在,在下面的查询中,我们将时区更改为UTC-05:00,并且更改了具有TIMESTAMP数据类型的表的结果。
mysql> SET @@session.time_zone = '-5:00';mysql> Select * from test_timestamp;
+---------------------+
| time |
+---------------------+
| 2017-11-14 06:59:50 |
+---------------------+
1 row in set (0.00 sec)
输出结果
mysql> Select * from test_datetime;+---------------------+
| time |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)
以上是 MySQL DATETIME和TIMESTAMP数据类型有什么区别? 的全部内容, 来源链接: utcz.com/z/345592.html